首页 > 解决方案 > 可缩放的 CSS 正方形

问题描述

我对width/height和使用flexbox. 我一直试图让每个div都是一个紫色的正方形,但它似乎裁剪成文本的大小。我希望每种颜色在调整大小时都保持方形,但只是缩小比例。

.dark-box
{
    background: #8f6cda;
    text-align: center;
    text-decoration: none;
    color: #ffffff;
    font-family: 'verdana';
}

.med-box
{
    background: #a68fd8;
    text-align: center;
    text-decoration: none;
    color: #ffffff;
    font-family: 'verdana';
}

.light-box
{
    background: #b5a5d7;
    text-align: center;
    text-decoration: none;
    color: #ffffff;
    font-family: 'verdana';
}

.dark-box:hover, .med-box:hover, .light-box:hover
{
    opacity: 0.5;
}

.dark-box a, .med-box a, .light-box a
{
    text-decoration: none;
    color: #ffffff;
    font-family: 'verdana';
}

.col-md-2
{
    padding: 0;
    margin: 0;
    list-style: none;
    display: -webkit-box;
    display: -moz-box;
    display: -ms-flexbox;
    display: -webkit-flex;
    display: flex;
    -webkit-flex-flow: row;
    transition: opacity .2s ease-in-out;
}

https://codepen.io/adms2000/pen/wvaaxNz

我也不确定为什么文本仅在display: flex设置为tile类中的属性时才居中。谢谢!

标签: css

解决方案


用于:before样式化您的flex-items. 看片段。

.col-md-2 {
  padding: 0;
  margin: 0;
  list-style: none;
  display: -webkit-box;
  display: -moz-box;
  display: -ms-flexbox;
  display: -webkit-flex;
  display: flex;
  -webkit-flex-flow: row;
  transition: opacity .2s ease-in-out;
}

.flex-item {
  /*text-align: center;*/
  text-decoration: none;
  color: #ffffff;
  font-family: 'verdana';
  
  width: 25%;
  display: flex;
  justify-content: center;
  align-items: center;
}

.flex-item:before {
  content: '';
  float: left;
  padding-top: 100%;
  opacity: 1;
}

.dark-box {
  background: #8f6cda;
}

.med-box {
  background: #a68fd8;
}

.light-box {
  background: #b5a5d7;
}

.flex-item:hover {
  opacity: 0.5;
}

.flex-item a {
  text-decoration: none;
  color: #ffffff;
  font-family: 'verdana';
}
<div class="col-md-2">
  <div class="dark-box flex-item">
    <span>Hello</span>
  </div>
</div>

<div class="col-md-2">
  <div class="med-box flex-item">
    <span>Hello</span>
  </div>
</div>

<div class="col-md-2">
  <div class="light-box flex-item">
    <span>Hello</span>
  </div>
</div>


推荐阅读