【问题标题】:How can i make this button on React.js with Material UI or other tool?如何使用 Material UI 或其他工具在 React.js 上制作这个按钮?
【发布时间】:2020-09-17 12:03:15
【问题描述】:

我想制作一个与这张图片类似的按钮。我认为它是由一个按钮(左侧)组成的,我不知道如何制作它的右侧(箭头图),我猜箭头里面是一个图像和一个排版。希望你能帮助我!!

【问题讨论】:

    标签: reactjs user-interface button material-ui


    【解决方案1】:

    您可以这样继续,创建按钮组件并使用 css 对其进行格式化,使用伪元素创建箭头的尖端。

    const App = () => {
    
      const icon1 = "https://img.icons8.com/ios-filled/50/000000/crane.png"
      const icon2 = "https://img.icons8.com/ios-glyphs/30/000000/interstate-plow-truck.png"
      
      const ArrowButton = ( props ) => (
        <div className="arrow_box" onClick={props.click} >
        <div className="arrow_button"></div>
        <div className="arrow_content">
          <div className="arrow_content_img-box">
          <img className="arrow_content_img" alt="icon" src={props.icon} />
          </div>
          <span className="arrow_content_text">{props.iconRef}</span>
        </div>
      </div>
      )
    
      const handleClick = () => {
        alert('click')
      }
    
      return (
        <div className="container">
          <h1 className="title__primary">Arrow Button</h1>
          <ArrowButton icon={icon1} iconRef={"pl001"} click={handleClick} />
          <ArrowButton icon={icon2} iconRef={"fr005"} click={handleClick} />
        </div>
      );
    };
    
        ReactDOM.render(
          <App />, document.getElementById("react")
    );
    * {
      margin: 0;
      padding: 0;
      box-sizing: border-box;
      font-family: sans-serif;
      text-align: center;
    }
    
    .arrow_box {
      width: 200px;
      height: 60px;
      margin: 5px;
      cursor: pointer;
      border-top: 2px solid #c9cdd0;
      border-bottom: 2px solid #c9cdd0;
      border-left: 2px solid #c9cdd0;
      border-radius: 8px 0 0 8px;
      background-color: #ffffff;
      position: relative;
      display: flex;
      align-items: center;
      flex-direction: row;
    }
    
    .arrow_box::before {
      content: "";
      position: absolute;
      width: 40px;
      height: 40px;
      top: 50%;
      left: 89.5%;
      background-color: #ffffff;
      border-top: 2px solid #c9cdd0;
      border-right: 2px solid #c9cdd0;
      transform: rotate(45deg);
      margin-top: -21px;
    }
    
    .arrow_box:hover, .arrow_box:hover::before{
      background-color: #006eff;
    }
    
    .arrow_button {
      position: relative;
      width: 56px;
      height: 56px;
      font-size: 1.5rem;
      color: #ffffff;
      background-color: #00122c;
      border-radius: 6px 0 0 6px;
      display: flex;
      align-items: center;
      justify-content: center;
    }
    
    .arrow_button::before {
      content: "\2716";
    }
    
    .arrow_content {
      position: relative;
      display: flex;
      align-items: center;
      justify-content: space-evenly;
      height: 56px;
      width: 144px;
    }
    
    .arrow_content_img-box {
      height: 50px;
      width: 50px;
      border-radius: 50%;
      background-color: #ffe8aa;
      display: flex;
      align-items: center;
      justify-content: center;
    }
    
    .arrow_content_img {
      height: 35px;
      width: auto;
      filter: invert(75%) sepia(32%) saturate(7078%) brightness(100%)
        hue-rotate(15deg) contrast(100%);
    }
    
    .arrow_content_text {
      text-transform: uppercase;
      font-size: 1.5rem;
      font-weight: bold;
    }
    <script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.6.3/umd/react.production.min.js">
    </script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.6.3/umd/react-dom.production.min.js"></script>
    
    <div id="react"></div>

    【讨论】:

      【解决方案2】:

      我会将元素分成 3 个 div:两个矩形和三角形。左矩形 - 带有图标的按钮,右矩形 - 图像和文本,三角形只是一个空 div。这就是您可以赋予 div 以使其看起来像您需要的三角形的样式。

      triangle: {
       width: 0,
       height: 0,
       backgroundColor: "transparent",
       borderStyle: "solid",
       borderLeftWidth: 50,
       borderRightWidth: 50,
       borderBottomWidth: 100,
       borderLeftColor: "transparent",
       borderRightColor: "transparent",
       borderBottomColor: "red",
       transform: "rotate(90deg)" }
      

      division

      【讨论】:

        猜你喜欢
        • 2020-12-08
        • 1970-01-01
        • 1970-01-01
        • 2021-04-21
        • 2021-05-13
        • 1970-01-01
        • 2012-02-05
        • 2022-11-15
        • 1970-01-01
        相关资源
        最近更新 更多