【问题标题】:How can i make text is responsive in a div如何使文本在 div 中响应
【发布时间】:2018-09-27 19:12:01
【问题描述】:

我有一个 V 形状态栏,每个状态栏都有一个长文本。在大屏幕上一切都很完美。但在小屏幕文本中会破坏对齐方式和形状。我不需要在手机屏幕上工作,但它也会在笔记本电脑的小屏幕上坏掉。

我的目标结果如下所示(小文本我的代码工作正常)

我的sn-ps如下,请指教。

.chevron {
  display: inline-block;
  position: relative;
  clear: both;
  padding: 10px;
  height: 20px;
  width: 15%;
  text-align:center;
  color: white;
  font-size: 12px;
}

.chevron:before {
  top: 0;
  -webkit-transform: skew(55deg, 0deg);
  -moz-transform: skew(55deg, 0deg);
  -ms-transform: skew(55deg, 0deg);
  -o-transform: skew(55deg, 0deg);
  transform: skew(55deg, 0deg);
}
.chevron:after {
  top: 50%;
  -webkit-transform: skew(-55deg, 0deg);
  -moz-transform: skew(-55deg, 0deg);
  -ms-transform: skew(-55deg, 0deg);
  -o-transform: skew(-55deg, 0deg);
  transform: skew(-55deg, 0deg);
}
.chevron:after, .chevron:before {
  content: '';
  position: absolute;
  left: 15px;
  z-index:-1;
  height: 50%;
  width: 100%;
  background: #609090;
}
<div class="chevron">Claim registered</div>
<div class="chevron">Awaiting Emails </div>
<div class="chevron">Please Repair; Awaiting repair date</div>
<div class="chevron">some lengthiest; status goes</div>
<div class="chevron">Invoice Paid</div>

【问题讨论】:

  • 在.chevron css 类中添加overflow:hidden,你会看到一些变化。
  • 这将切断溢出的文本。除非溢出是滚动或可见的,否则它将在可滚动条中显示文本
  • overflow:hidden添加到.chevron将有助于对齐问题,但会丢失伪代码

标签: html css responsive-design alignment css-shapes


【解决方案1】:

您可能会考虑的一些提示:

  • 您可以调整padding 以使文本远离边缘。

  • Flex 也可用于使内容居中。

  • Vertical-align 可用于内联框

.chevron {
/* flex to align content */
  display: inline-flex;
  align-items:center;
  justify-content:center;
  /* end flex update*/
  position: relative;
  clear: both;
  padding: 10px 0  10px 2.5em;/* adjust here side's padding*/
  margin:2px 0;/*vertical  margins if wrapping ? */
  height: 20px;
  width: 15%;
  vertical-align:middle;
  text-align:center;
  color: white;
  font-size: 12px;
}

.chevron:before {
  top: 0;
  -webkit-transform: skew(55deg, 0deg);
  -moz-transform: skew(55deg, 0deg);
  -ms-transform: skew(55deg, 0deg);
  -o-transform: skew(55deg, 0deg);
  transform: skew(55deg, 0deg);
}
.chevron:after {
  top: 50%;
  -webkit-transform: skew(-55deg, 0deg);
  -moz-transform: skew(-55deg, 0deg);
  -ms-transform: skew(-55deg, 0deg);
  -o-transform: skew(-55deg, 0deg);
  transform: skew(-55deg, 0deg);
}
.chevron:after, .chevron:before {
  content: '';
  position: absolute;
  left: 15px;
  z-index:-1;
  height: 50%;
  width: 100%;
  background: #609090;
}
<div class="chevron">Claim registered</div>
<div class="chevron">Awaiting Emails </div>
<div class="chevron">Please Repair; Awaiting repair date</div>
<div class="chevron">some lengthiest; status goes</div>
<div class="chevron">Invoice Paid</div>

【讨论】:

    【解决方案2】:

    .content {
        width: calc(100% - 30px);
        display: flex;
        flex-direction: row;
        justify-content: space-around;
        align-items: stretch;
    }
    @media(max-width:768px) {
      .content {
        flex-flow: wrap;
      }
      .chevron {
        text-align:end;
      }
    }
    .chevron {
      width: 100%;
      position: relative;
      padding: 10px;
      min-height: 20px;
       display: flex;
       flex-direction: column;
       justify-content: center;
      margin: 5px 2px;
    }
    .chevron span {
      width: 100%;
      margin-left: 25px;
      color: white;
      text-align: center;
      font-size: 12px;
      white-space: pre-wrap;
      text-transform: capitalize;
    }
    .chevron:before {
      top: 0;
      -webkit-transform: skew(55deg, 0deg);
      -moz-transform: skew(55deg, 0deg);
      -ms-transform: skew(55deg, 0deg);
      -o-transform: skew(55deg, 0deg);
      transform: skew(55deg, 0deg);
    }
    .chevron:after {
      top: 50%;
      -webkit-transform: skew(-55deg, 0deg);
      -moz-transform: skew(-55deg, 0deg);
      -ms-transform: skew(-55deg, 0deg);
      -o-transform: skew(-55deg, 0deg);
      transform: skew(-55deg, 0deg);
    }
    .chevron:after, .chevron:before {
      content: '';
      position: absolute;
      left: 15px;
      z-index:-1;
      height: 50%;
      width: 100%;
      background: #609090;
    }
    <div class="content">
      <div class="chevron"><span>Claim registered</span></div>
      <div class="chevron"><span>Awaiting Emails</span> </div>
      <div class="chevron"><span>Please Repair; Awaiting repair date </span></div>
      <div class="chevron"><span>some lengthiest; status goes</span></div>
      <div class="chevron"><span>Invoice Paid</span></div>
    </div>

    好的,朋友就是这个!

    【讨论】:

      【解决方案3】:

      如果您对齐元素并在响应式的情况下将其居中并每行仅保留一个会怎样。

        .chevron {
          display: inline-block;
          position: relative;
          clear: both;
          padding: 12px 0 8px 27px;
          height: 20px;
          width: 15%;
          text-align:center;
          color: white;
          font-size: 12px;
          vertical-align: top;
          line-height: 9px;
        }
        
        .chevron:before {
          top: 0;
          -webkit-transform: skew(40deg, 0deg);
          -moz-transform: skew(40deg, 0deg);
          -ms-transform: skew(40deg, 0deg);
          -o-transform: skew(40deg, 0deg);
          transform: skew(40deg, 0deg);
          border-top-left-radius: 3px;
        }
        .chevron:after {
          top: 50%;
          -webkit-transform: skew(-40deg, 0deg);
          -moz-transform: skew(-40deg, 0deg);
          -ms-transform: skew(-40deg, 0deg);
          -o-transform: skew(-40deg, 0deg);
          transform: skew(-40deg, 0deg);
          border-bottom-left-radius: 3px;
        }
        .chevron:after, .chevron:before {
          content: '';
          position: absolute;
          left: 15px;
          z-index:-1;
          height: 50%;
          width: 100%;
          background: #609090;
        }
      @media all and (max-width:768px){
        .chevron {display: block;margin: 5px auto;padding: 8px 9px 12px 30px;}
      }
       
      <div class="chevron">Claim registered</div>
      <div class="chevron">Awaiting Emails </div>
      <div class="chevron">Please Repair; Awaiting repair date</div>
      <div class="chevron">some lengthiest; status goes</div>
      <div class="chevron">Invoice Paid</div>

      【讨论】:

        【解决方案4】:

        .content {
            width: 100%;
            display: flex;
            flex-direction: row;
            justify-content: space-around;
            align-items: center;
        }
        @media(max-width:768px) {
          .content {
            flex-flow: wrap;
          }
        }
        .chevron {
          width: 100%;
          position: relative;
          padding: 10px;
          height: 20px;
          line-height: 20px;
          text-align:center;
          color: white;
          font-size: 12px;
          white-space: pre-wrap;
        }
        
        .chevron:before {
          top: 0;
          -webkit-transform: skew(55deg, 0deg);
          -moz-transform: skew(55deg, 0deg);
          -ms-transform: skew(55deg, 0deg);
          -o-transform: skew(55deg, 0deg);
          transform: skew(55deg, 0deg);
        }
        .chevron:after {
          top: 50%;
          -webkit-transform: skew(-55deg, 0deg);
          -moz-transform: skew(-55deg, 0deg);
          -ms-transform: skew(-55deg, 0deg);
          -o-transform: skew(-55deg, 0deg);
          transform: skew(-55deg, 0deg);
        }
        .chevron:after, .chevron:before {
          content: '';
          position: absolute;
          left: 15px;
          z-index:-1;
          height: 50%;
          width: 100%;
          background: #609090;
        }
        <div class="content">
          <div class="chevron">Claim registered</div>
          <div class="chevron">Awaiting Emails </div>
          <div class="chevron">Please Repair; Awaiting repair date</div>
          <div class="chevron">some lengthiest; status goes</div>
          <div class="chevron">Invoice Paid</div>
        </div>

        我希望这就是你要找的东西:)

        【讨论】:

        • 我需要你的帮助。调整屏幕大小时,您可以看到,最长的文本向左推送并与之前的状态栏重叠。如果将换行重新调整为两行,但第一行与前一行重叠,如何避免这种情况
        【解决方案5】:

        是的,样式不是响应式的,固定的高度和宽度。还可以使用 word-wrap 属性从重叠的内容区域中分词(如果高度固定,则效果不佳)。

        看一个例子:

        .chevron {
          display: inline-block;
          position: relative;
          clear: both;
          padding: 10px;
        
         /* You can change this to fit the height you want */
          height: auto;
        
          width: 15%;
          text-align:center;
          color: white;
          font-size: 12px;
          word-wrap: break-word;
        }
        
        /* Responsive media query */
        @media screen and ( min-width: 992px )
        {
            .chevron {
                max-height: 20px;
            }
        }
        

        【讨论】:

          猜你喜欢
          • 2018-08-09
          • 2017-06-02
          • 2016-12-19
          • 1970-01-01
          • 1970-01-01
          • 2018-05-03
          • 2021-09-01
          • 1970-01-01
          • 2014-09-01
          相关资源
          最近更新 更多