Почему элемент div сжимается при применении float к css? - PullRequest
0 голосов
/ 27 марта 2019

У меня есть пара проблем с этим кодом: 1. Четвертый div, похоже, сжимается. Его height меньше, чем другие div. 2. Высота контейнера div не изменяется до 50%. Я использовал wv, но я не уверен, почему% не работает.

https://codepen.io/anon/pen/drERNr

.container {
	background: blue;
	width: 75%;
	height: 50vw;
}


.box {
	width: 20%;
	background: #333;
	color: white;
	font-size: 25px;
	font-family: 'helvetica';
	border: 1px solid blue;
	margin: 2px;
	float: left;
	text-align: center;
}

#box4 {
	width: 20%;
	background: #333;
	color: white;
	font-size: 25px;
	font-family: 'helvetica';
	border: 1px solid blue;
	margin-top: 2px;
	text-align: center;
}
<!DOCTYPE html>
<html>
<head>
  <link rel="stylesheet" type="text/css" href="index.css">
  <title>prac</title>
</head>
<body>
  <div class="container">
    <div id="one" class="box">
      <p>One</p>
    </div>
    <div id="two" class="box">
      <p>Two</p>
    </div>
    <div id="three" class="box">
      <p>Three</p>
    </div>
    <div id="box4">
      <p>four</p>
    </div>
  </div>
</body>
</html>

1 Ответ

0 голосов
/ 27 марта 2019

Ваш четвертый элемент сдавлен, потому что вы float первые три элемента в left, но не «сбрасываете» float.Это может быть достигнуто с помощью clearfix:

#box4:before {
  content: "";
  display: table;
  clear: both;
}

.container {
  background: blue;
  width: 75%;
  height: 50vw;
}

.box {
  width: 20%;
  background: #333;
  color: white;
  font-size: 25px;
  font-family: 'helvetica';
  border: 1px solid blue;
  margin: 2px;
  float: left;
  text-align: center;
}

#box4:before {
  content: "";
  display: table;
  clear: both;
}

#box4 {
  width: 20%;
  background: #333;
  color: white;
  font-size: 25px;
  font-family: 'helvetica';
  border: 1px solid blue;
  margin-top: 2px;
  text-align: center;
}
<!DOCTYPE html>
<html>

<head>
  <link rel="stylesheet" type="text/css" href="index.css">
  <title>prac</title>
</head>

<body>
  <div class="container">
    <div id="one" class="box">
      <p>One</p>
    </div>
    <div id="two" class="box">
      <p>Two</p>
    </div>
    <div id="three" class="box">
      <p>Three</p>
    </div>
    <div id="box4">
      <p>four</p>
    </div>
  </div>
</body>

</html>

Почему вы не можете использовать % на .container, это потому, что основанные на процентах единицы наследуют свое значение от непосредственного родителя (ицепочка вверх), но <body> не имеет фиксированного значения height.Вам нужно рассчитать height на родителя, чтобы ребенок мог рассчитать свои собственные height в процентах.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...