#html #css
#HTML #css
Вопрос:
Итак, проблема в том, что всякий раз, когда я делаю зеленый и оранжевый рядом, это не работает, даже если 1000, разделенное на 2, равно 500 (кстати, новое в html), я действительно мало знаю о позициях и размерах в html
Вот HTML всего этого
h1{
position:relative;
color:#89CFF0;
font-family:arial;
width:1000px;
margin:0 auto;
text-align:center;
}
.boxes{
width:1000px;
margin:0 auto;
position:relative;
text-align:center;
}
#box1{
font-family:arial;
border:1px solid red;
position:relative;
margin:0 auto;
width:1000px;
top:40px;
background-color:red;
}
#box2{
font-family:arial;
border:1px solid blue;
position:relative;
margin:0 auto;
width:1000px;
height:150px;
top:40px;
background-color:blue;
}
#box3{
position:relative;
font-family:arial;
border:1px solid green;
position:relative;
margin:0 auto;
width:500px;
height:100px;
top:40px;
float:left;
background-color:green;
}
#box4{
font-family:arial;
border:1px solid orange;
margin:0 auto;
position:relative;
width:500px;
height:100px;
top:40px;
float:left;
background-color:orange;
}
#box5{
font-family:arial;
border:1px solid yellow;
position:relative;
margin:0 auto;
width:1000px;
top:140px;
background-color:yellow;
}
<h1> The Box </h1>
<div class="boxes">
<div id="box1">
<p>RED</p>
</div>
<div id="box2">
<p>BLUE</p>
</div>
<div id="box3">
<p>GREEN</p>
</div>
<div id="box4">
<p>ORANGE</p>
</div>
<div id="box5">
<p>YELLOW</p>
</div>
</div>
Вывод:
Я думаю, что проблема в px .box3
, и я уверен, что box5
это хорошо
Ответ №1:
Вы забываете размер границы, который нужно включить в расчет. У вас есть родительский div размером 1000 пикселей. вы делите divs на 50% как 500 пикселей. Теперь есть граница, которую вам не хватает для рассмотрения. таким образом, граница размером 1 пиксель приведет к 2px (слева справа) дополнительной ширины, т.е. 502px. поэтому вам нужно уменьшить ширину на 2px, т.е. 498px.
Смотрите рабочий фрагмент здесь.
h1 {
position: relative;
color: #89CFF0;
font-family: arial;
width: 1000px;
margin: 0 auto;
text-align: center;
}
.boxes {
width: 1000px;
margin: 0 auto;
position: relative;
text-align: center;
}
#box1 {
font-family: arial;
border: 1px solid red;
position: relative;
margin: 0 auto;
width: 1000px;
top: 40px;
background-color: red;
}
#box2 {
font-family: arial;
border: 1px solid blue;
position: relative;
margin: 0 auto;
width: 1000px;
height: 150px;
top: 40px;
background-color: blue;
}
#box3 {
position: relative;
font-family: arial;
border: 1px solid green;
position: relative;
margin: 0 auto;
width: 498px;
height: 100px;
top: 40px;
float: left;
background-color: green;
}
#box4 {
font-family: arial;
border: 1px solid orange;
margin: 0 auto;
position: relative;
width: 498px;
height: 100px;
top: 40px;
float: left;
background-color: orange;
}
#box5 {
font-family: arial;
border: 1px solid yellow;
position: relative;
margin: 0 auto;
width: 1000px;
top: 140px;
background-color: yellow;
}
<h1> The Box </h1>
<div class="boxes">
<div id="box1">
<p>RED</p>
</div>
<div id="box2">
<p>BLUE</p>
</div>
<div id="box3">
<p>GREEN</p>
</div>
<div id="box4">
<p>ORANGE</p>
</div>
<div id="box5">
<p>YELLOW</p>
</div>
</div>
Ответ №2:
Добавьте зеленый и оранжевый цвета в один div
<div id="box3">
<div>
<p>GREEN</p>
<div>
<div>
<p>ORANGE</p>
</div>
</div>
Добавьте display:flex
в основной div box3
, это приведет к side by side
проверьте приведенный ниже фрагмент для свойства flex
или вы можете использовать сетку начальной загрузки
#boxes{
display:flex;
}
#box3{
background-color:green;
width:450px;
}
#box4{
background-color:orange;
width:450px;
}
<div id="boxes">
<div id="box3">
<p>GREEN</p>
</div>
<div id="box4">
<p>ORANGE</p>
</div>
</div>
Ответ №3:
Вы можете использовать родительский контейнер flexbox и вложить в него зеленые и оранжевые поля в качестве дочерних элементов, чтобы создать строку, используя display: flex
. Затем отрегулируйте top
положение нижнего желтого поля или увеличьте его высоту, чтобы занять это пустое пространство.
В правой части оранжевого поля есть немного ненужного дополнительного пространства, и это исчезает, когда border
из синего поля удаляется. Я вижу, как вы использовали border
в каждом поле для замены отступов, поэтому я добавил немного padding
, и все хорошо выровнялось.
.row {
display: flex;
}
h1{
position:relative;
color:#89CFF0;
font-family:arial;
width:1000px;
margin:0 auto;
text-align:center;
}
.boxes{
width:1000px;
margin:0 auto;
position:relative;
text-align:center;
}
#box1{
font-family:arial;
/* border:1px solid red; */
padding: .5rem 0;
position:relative;
margin:0 auto;
width:1000px;
top:40px;
background-color:red;
}
#box2{
font-family:arial;
/* border:1px solid blue; */
padding-top: .5rem;
position:relative;
margin:0 auto;
width:1000px;
height:150px;
top:40px;
background-color:blue;
}
#box3{
position:relative;
font-family:arial;
border:1px solid green;
position:relative;
margin:0 auto;
width:500px;
height:100px;
top:40px;
float:left;
background-color:green;
}
#box4{
font-family:arial;
border:1px solid orange;
margin:0 auto;
position:relative;
width:500px;
height:100px;
top:40px;
float:left;
background-color:orange;
}
#box5{
font-family:arial;
/* border:1px solid yellow; */
padding: .5rem 0;
position:relative;
margin:0 auto;
width:1000px;
top:40px;
background-color:yellow;
}
<h1> The Box </h1>
<div class="boxes">
<div id="box1">
<p>RED</p>
</div>
<div id="box2">
<p>BLUE</p>
</div>
<div class="row">
<div id="box3">
<p>GREEN</p>
</div>
<div id="box4">
<p>ORANGE</p>
</div>
</div>
<div id="box5">
<p>YELLOW</p>
</div>
</div>