【问题标题】:Flexbox: text not shrinking proportionallyFlexbox:文本不按比例缩小
【发布时间】:2017-06-12 15:32:26
【问题描述】:

对于我正在创建的网站,我设法在 Flexbox/CSS 中重新创建了公司徽标(这是相当基本的)。我在互联网的某个地方找到了 Flexbox CSS,但不记得在哪里。主要是没动过,我自己的样式在底部/* My Styles */

所以它基本上可以工作 - 但是当我将浏览器窗口的大小调整为手机大小屏幕的假平板电脑大小屏幕时,当屏幕尺寸小于 568 像素时,徽标内的文本开始缩小。

有一些 CSS

@media all and (max-width: 568px) {
.col-span-1,
.col-span-3,
.col-span-4,
.col-span-5 {
flex-basis: 50%;
} 

这似乎与文本变小有关,但我就是不明白。直到几天前,我还没有听说过 flexbox,所以在这方面我不是专家。

无论屏幕大小如何,我都需要徽标内的文本按比例增长和缩小,但我还需要弹性框 当屏幕尺寸小于 568 像素时,彼此向下推。

你们能帮我解决这个问题吗?

提前感谢您的帮助和时间,非常感谢!

亲切的问候,

菲克·巴泽尔曼斯

PS 在下面的代码 sn-p 中,结果帧小于 568 像素(在我的 MacBook Pro 13" 上),所以我不确定你们是否能看到徽标的外观,因此我将添加一个指向徽标图片的链接,以确保您理解我的蹩脚解释;)

Picture of original logo

@charset "UTF-8";

/* CSS Document */

.row {
  margin-top: 0.5rem;
  display: flex;
  flex-direction: row;
  flex-wrap: wrap;
}

.col {
  flex: 1 1 8%;
  margin: 0 0 0.5rem 0;
  padding: 0.5em 10px;
  box-sizing: border-box;
}

.col-logo {
  flex: 1 1 8%;
  margin: 0;
  padding: 0.5em 10px;
  box-sizing: border-box;
}


/* nested grids */

.row .row,
.row.nested {
  flex: 1 1 auto;
  margin-top: -0.5em;
}


/* full width grids */

.row.wide-fit {
  margin-left: -10px;
  margin-right: -10px;
}


/* center grids */

.row.center {
  justify-content: center;
}

.center .col {
  flex-grow: 0;
  flex-shrink: 0;
}


/* columns widths */

.col-span-1 {
  flex-basis: 8.3333%;
}

.col-span-2 {
  flex-basis: 16.6666%;
}

.col-span-3 {
  flex-basis: 25%;
}

.col-span-4 {
  flex-basis: 33.3333%;
}

.col-span-5 {
  flex-basis: 41.6666%;
}

.col-span-6 {
  flex-basis: 50%;
}

.col-span-7 {
  flex-basis: 58.3333%;
}

.col-span-8 {
  flex-basis: 66.6666%;
}

.row .col-logo.col-span-8 {}

.col-span-9 {
  flex-basis: 75%;
}

.col-span-10 {
  flex-basis: 83.3333%;
}

.col-span-11 {
  flex-basis: 91.6666%;
}

.col-span-12 {
  flex-basis: 100%;
}


/* examples */

.fixed-width {
  flex: 0 0 500px;
  background-color: rgba(255, 0, 0, 0.1) !important;
}

@media all and (max-width: 568px) {
  .col-span-1,
  .col-span-2,
  .col-span-3,
  .col-span-4,
  .col-span-5 {
    flex-basis: 50%;
  }
  .col-span-6,
  .col-span-7,
  .col-span-8,
  .col-span-9,
  .col-span-10,
  .col-span-11 {
    flex-basis: 100%;
  }
  .nested .col {
    flex-basis: 100%;
  }
}


/* eye candy */

body {
  font-family: sans-serif;
}

.row {
  background-color: #cccccc;
  background-color: rgba(0, 0, 0, 0.1);
}

.col {
  background-color: #999999;
  background-color: rgba(0, 0, 0, 0.2);
  background-clip: content-box;
  border: 1px solid rgba(0, 0, 0, 0.1);
}


/* My Styles */

#header-logo-text-container {
  display: flex;
  flex-direction: column;
  align-items: stretch;
  justify-content: flex-end;
}

.header-logo-container {
  min-width: 0;
  background-color: #eb5d60;
  padding: 1vw;
  display: flex;
  align-items: center;
  justify-content: center;
}

.header-logo-container:after {
  content: "";
  display: block;
  padding-bottom: 100%;
}

.logo-whiteborder {
  border: 0.4vw solid white;
  display: flex;
  justify-content: center;
}

.logo-whiteborder:after {
  content: "";
  display: block;
  padding-bottom: 100%;
}

.header-logo-text-big {
  color: white;
  display: flex;
  flex-shrink: 1;
  font-family: "Gill Sans", "Gill Sans MT", "Myriad Pro", "DejaVu Sans Condensed", Helvetica, Arial, "sans-serif";
  src: url('../font-gill-sans.woff');
  font-size: 3.3vw;
  margin-left: auto;
  margin-right: auto;
  min-width: 0;
  padding-left: 1vw;
  padding-right: 1vw;
}

.header-logo-text-small {
  color: white;
  display: flex;
  flex-shrink: 1;
  font-family: "Times New Roman";
  font-size: 1.4vw;
  letter-spacing: 0.12em;
  margin-left: auto;
  margin-right: auto;
  margin-top: 1.7vw;
  margin-bottom: 1.7vw;
  min-width: 0;
  padding-left: 1vw;
  padding-right: 1vw;
}
<!doctype html>
<html>

<head>
  <meta charset="UTF-8">
  <title>Untitled Document</title>
  <link href="css/durlinger-style.css" rel="stylesheet" type="text/css">
</head>

<body>

  <div class="row">

    <div class="col-logo col-span-4 header-logo-container">
      <div class="col-span-11 logo-whiteborder">
        <div id="header-logo-text-container">
          <div class="header-logo-text-big">Durlinger</div>
          <div class="header-logo-text-small">financieel beheer</div>
        </div>
      </div>
    </div>

    <div class="col-logo col-span-8">
      <!-- text beside logo -->

    </div>

  </div>

</body>

</html>

【问题讨论】:

  • 查看帖子中的第一行代码,flex base 设置为 50%,因此当您在该媒体查询宽度下调整大小时,由于它是 50%,所以事情会缩小
  • 是的...我意识到罪魁祸首在某个地方,我只是不知道如何解决它。如果我取出该代码(已经尝试过),则徽标在调整屏幕大小时保持完美,但弹性框不再以较小的屏幕尺寸垂直显示。我确实希望他们这样做,并拥有一个完美的标志。
  • 您始终可以覆盖某些元素的样式。如果您可以在小提琴或其他东西中创建一个简化的示例,我很确定这是一个相当简单的问题

标签: html css flexbox viewport-units


【解决方案1】:

由于您的字体大小使用视口单位vw,因此您也需要使用媒体查询将它们更改为类似的内容,我还在下面的 sn-p 中添加到您的@media 规则中

.header-logo-text-big {
  font-size: 13.2vw;
}
.header-logo-text-small {
  font-size: 5.6vw;
}

此外,为了让媒体查询正确覆盖以前的规则,它们应该在 CSS 中排在最后

堆栈sn-p

@charset "UTF-8";

/* CSS Document */

.row {
  margin-top: 0.5rem;
  display: flex;
  flex-direction: row;
  flex-wrap: wrap;
}

.col {
  flex: 1 1 8%;
  margin: 0 0 0.5rem 0;
  padding: 0.5em 10px;
  box-sizing: border-box;
}

.col-logo {
  flex: 1 1 8%;
  margin: 0;
  padding: 0.5em 10px;
  box-sizing: border-box;
}


/* nested grids */

.row .row,
.row.nested {
  flex: 1 1 auto;
  margin-top: -0.5em;
}


/* full width grids */

.row.wide-fit {
  margin-left: -10px;
  margin-right: -10px;
}


/* center grids */

.row.center {
  justify-content: center;
}

.center .col {
  flex-grow: 0;
  flex-shrink: 0;
}


/* columns widths */

.col-span-1 {
  flex-basis: 8.3333%;
}

.col-span-2 {
  flex-basis: 16.6666%;
}

.col-span-3 {
  flex-basis: 25%;
}

.col-span-4 {
  flex-basis: 33.3333%;
}

.col-span-5 {
  flex-basis: 41.6666%;
}

.col-span-6 {
  flex-basis: 50%;
}

.col-span-7 {
  flex-basis: 58.3333%;
}

.col-span-8 {
  flex-basis: 66.6666%;
}

.row .col-logo.col-span-8 {}

.col-span-9 {
  flex-basis: 75%;
}

.col-span-10 {
  flex-basis: 83.3333%;
}

.col-span-11 {
  flex-basis: 91.6666%;
}

.col-span-12 {
  flex-basis: 100%;
}


/* examples */

.fixed-width {
  flex: 0 0 500px;
  background-color: rgba(255, 0, 0, 0.1) !important;
}


/* eye candy */

body {
  font-family: sans-serif;
}

.row {
  background-color: #cccccc;
  background-color: rgba(0, 0, 0, 0.1);
}

.col {
  background-color: #999999;
  background-color: rgba(0, 0, 0, 0.2);
  background-clip: content-box;
  border: 1px solid rgba(0, 0, 0, 0.1);
}


/* My Styles */

#header-logo-text-container {
  display: flex;
  flex-direction: column;
  align-items: stretch;
  justify-content: flex-end;
}

.header-logo-container {
  min-width: 0;
  background-color: #eb5d60;
  padding: 1vw;
  display: flex;
  align-items: center;
  justify-content: center;
}

.header-logo-container:after {
  content: "";
  display: block;
  padding-bottom: 100%;
}

.logo-whiteborder {
  border: 0.4vw solid white;
  display: flex;
  justify-content: center;
}

.logo-whiteborder:after {
  content: "";
  display: block;
  padding-bottom: 100%;
}

.header-logo-text-big {
  color: white;
  display: flex;
  flex-shrink: 1;
  font-family: "Gill Sans", "Gill Sans MT", "Myriad Pro", "DejaVu Sans Condensed", Helvetica, Arial, "sans-serif";
  src: url('../font-gill-sans.woff');
  font-size: 3.3vw;
  margin-left: auto;
  margin-right: auto;
  min-width: 0;
  padding-left: 1vw;
  padding-right: 1vw;
}

.header-logo-text-small {
  color: white;
  display: flex;
  flex-shrink: 1;
  font-family: "Times New Roman";
  font-size: 1.4vw;
  letter-spacing: 0.12em;
  margin-left: auto;
  margin-right: auto;
  margin-top: 1.7vw;
  margin-bottom: 1.7vw;
  min-width: 0;
  padding-left: 1vw;
  padding-right: 1vw;
}

@media all and (max-width: 568px) {
  .col-span-1,
  .col-span-2,
  .col-span-3,
  .col-span-4,
  .col-span-5 {
    flex-basis: 50%;
  }
  .col-span-6,
  .col-span-7,
  .col-span-8,
  .col-span-9,
  .col-span-10,
  .col-span-11 {
    flex-basis: 100%;
  }
  .nested .col {
    flex-basis: 100%;
  }

  .header-logo-text-big {
    font-size: 13.2vw;
  }
  .header-logo-text-small {
    font-size: 5.6vw;
  }

}
<!doctype html>
<html>

<head>
  <meta charset="UTF-8">
  <title>Untitled Document</title>
  <link href="css/durlinger-style.css" rel="stylesheet" type="text/css">
</head>

<body>

  <div class="row">

    <div class="col-logo col-span-4 header-logo-container">
      <div class="col-span-11 logo-whiteborder">
        <div id="header-logo-text-container">
          <div class="header-logo-text-big">Durlinger</div>
          <div class="header-logo-text-small">financieel beheer</div>
        </div>
      </div>
    </div>

    <div class="col-logo col-span-8">
      <!-- text beside logo -->

    </div>

  </div>

</body>

</html>

【讨论】:

  • 我运行了 sn-p,查看了整页,是的!我永远不会猜到它是在字体大小/vw 中。几天来一直在尝试凝灰岩,所以我对您的回答非常满意,并且会在晚餐后立即更新我的代码。它应该可以工作,就像您的代码一样。如果没有,我会回来;)
  • @FiekeBazelmans 欢迎您随时留言。也请接受我的回答,以便未来的用户知道该解决方案适合您
猜你喜欢
  • 2021-04-18
  • 1970-01-01
  • 2018-06-12
  • 2016-05-23
  • 2015-01-09
  • 1970-01-01
  • 1970-01-01
  • 2018-05-26
  • 1970-01-01
相关资源
最近更新 更多