【问题标题】:Set the width of an element like its height设置元素的宽度,就像它的高度一样
【发布时间】:2018-01-08 03:45:37
【问题描述】:

我找到了一些链接,如何使用边距/填充技巧 (http://www.mademyday.de/css-height-equals-width-with-pure-css.html) 设置元素的高度,例如其宽度。但是我想设置一个元素的宽度,比如它的高度。

.container {
  display: flex;
  margin: 20px;
  height: 50px; /* changing this value ... */
  width: 300px;
}

.label {
  flex: 1;
  background: green;
}

.icon {
  height: 100%;
  width: 50px; /* <- ... should set this value to the same size */
  background: red;
}

http://jsbin.com/melurilefe/edit?html,css,output

因此元素的高度为 100%,当其父元素的高度从 50px 变为 100px 时,元素的宽度应反映该大小,因此它始终保持为正方形。

仅使用 CSS 可以吗?谢谢!

【问题讨论】:

  • 您可以使用vh(视口高度)或vw(视口宽度)来设置高度和宽度。不幸的是,这意味着您不能根据父元素进行缩放,而只能根据视口大小进行缩放。
  • 我想我想出了一个解决方案,但它很脏,所以我想我会构建不同的组件。可以使用 flex-direction: column 构建元素并将其旋转 90 度并使用我在问题中发布的链接。然后还必须旋转内容等等;)
  • 我认为最简单的方法是使用 javaScript 并在每次加载或调整页面大小时运行它。然而,这不是你的问题。

标签: html css flexbox


【解决方案1】:

据我所知,没有仅使用 CSS 的动态解决方案。

如果您想更轻松地更改值(但它不是动态的),您可以做什么

使用 CSS 变量 。为该变量设置一个值,并将其用于两个元素的 with 和 height 。当您更改该变量的值时,宽度和高度都会发生变化

否则,您需要使用诸如 javascript/jQuery 之类的东西来获得取决于父高度的宽度

见下文

:root {
  --height-width: 50px;
}


.container {
  display: flex;
  margin: 20px;
  height: var(--height-width); /* changing this value ... */
  width: 300px;
}

.label {
  flex: 1;
  background: green;
}

.icon {
  height: 100%;
  width: var(--height-width); /* <- ... should set this value to the same size */
  background: red;
}
  <div class="container">
    <div class="label">Hey</div>
    <div class="icon">i</div>
  </div>

【讨论】:

  • 这与设置.icon{width: 50px}.container{height: 50px} 完全相同。从技术上讲,该变量没有用。
  • 如果您有许多要更改的项目,它有。所以你只改变一个地方。这就是变量的用途。我不知道为什么 op 想要改变它。有可能他想一次更改为多个元素。但是,是的,没有太大区别。我只是提供了一个替代方案,而且我在回答中说,据我所知,没有唯一的 css 解决方案
  • 如果单独定义宽度和高度,则不必处理浏览器对变量的支持; caniuse.com/css-variables/embed 。这种方法也不适用于百分比。由于这些原因,我不能真正推荐您的方法,而不是简单地设置变量。如果这些限制对 OP 来说不是问题,那么这是一个很好的解决方案。
  • 不幸的是,它必须改变响应性,而不仅仅是一次:(
  • @user2170547 如果你想要动态的话。那么你不能只用css..unfortunately来做到这一点。我可以用 jQuery 为你做一个简单的解决方案
猜你喜欢
  • 1970-01-01
  • 2018-03-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-17
  • 1970-01-01
相关资源
最近更新 更多