Css 三角形响应按钮

Css 三角形响应按钮,css,html,responsive-design,Css,Html,Responsive Design,我有一个垂直菜单放在引导容器中,它由两种类型的按钮组成 末端带有CSS三角形(置于:之后)的按钮(红色) 放置在中的常规按钮(绿色按钮) 问题: 页面的排版依赖于相对单位rem。随着视口的扩大,字体大小以及按钮内部的填充也会增加这会导致三角形大小及其位置出现问题 所有菜单项必须在右侧相互对齐。但是第一个按钮的三角形是使用负边距放置的,因此它重叠 下面是一个例子: 如何解决这些问题 HTML: 首先,我建议您使用box sizin *, *:after, *:before { box-s

我有一个垂直菜单放在引导容器中,它由两种类型的按钮组成

  • 末端带有CSS三角形(置于:之后)的按钮(红色)
  • 放置在
  • 中的常规按钮(绿色按钮)
问题:

  • 页面的排版依赖于相对单位rem。随着视口的扩大,字体大小以及按钮内部的填充也会增加这会导致三角形大小及其位置出现问题
  • 所有菜单项必须在右侧相互对齐。但是第一个按钮的三角形是使用负边距放置的,因此它重叠
  • 下面是一个例子:

    如何解决这些问题

    HTML:


    首先,我建议您使用box sizin

    *, *:after, *:before {
      box-sizing:border-box;
    }
    
    然后您可以使用CSS calc,在这里您可以计算一个元素的长度与其他单位的混合百分比,在您的情况下,将介于百分比和rem之间

    代码是。。。希望这对你有帮助

    .btn-switch {
      background: #f00;
      border-bottom: 2px solid #A00;
      padding: 0.7rem 1rem;
      margin-bottom: 10px;
      display: block;
      position: relative;
      color: #fff;
      width: calc(100% - 1.4rem);
    }
    
    .btn-switch:after {
      content: "";
      position: absolute;
      width: 0px;
      height: 0px;
      border-width: 1.4rem 0px 1.4rem 1.4rem;
      border-color: transparent transparent transparent #f00;
      border-style: solid;
      top: 0;
      bottom: 0;
      right: -1.4rem;
    }
    

    *, *:after, *:before {
      box-sizing:border-box;
    }
    
    .btn-switch {
      background: #f00;
      border-bottom: 2px solid #A00;
      padding: 0.7rem 1rem;
      margin-bottom: 10px;
      display: block;
      position: relative;
      color: #fff;
      width: calc(100% - 1.4rem);
    }
    
    .btn-switch:after {
      content: "";
      position: absolute;
      width: 0px;
      height: 0px;
      border-width: 1.4rem 0px 1.4rem 1.4rem;
      border-color: transparent transparent transparent #f00;
      border-style: solid;
      top: 0;
      bottom: 0;
      right: -1.4rem;
    }