#html #css #web #frontend #web-frontend
Вопрос:
У меня есть кнопка, которая расположена относительно ее родителя. Проблема в том, что когда эта родительская ширина меняется, мои кнопки больше не находятся в центре, и я не могу использовать margin: 0 auto
Я покажу несколько изображений, чтобы продемонстрировать, что я имею в виду:
посмотрите, как еда и гамбургер не центрированы, кстати, они расположены в центре экрана шириной 400 пикселей
.card-container {
width: 45%;
margin-bottom: 1rem;
background: #fff;
border: 1px solid #707070;
border-radius: 20px;
}
.card-container * {
margin: 0;
padding: 0 8px;
}
/* top-part */
.top-part {
font-size: 1.1rem;
font-weight: 700;
text-align: center;
padding: 2rem 0;
border-bottom: 1px solid #808080;
}
/* meal amp; burger */
.middle-part {
text-align: center;
position: absolute;
-webkit-box-align: center;
-webkit-box-pack: center;
display: -webkit-box;
}
img {
width: 12em;
height: 10em;
}
.meal-burger-btn {
position: relative;
background: #fff;
border: 1px solid #808080;
border-radius: 50%;
width: 3.5rem;
padding: 1.3em 0;
top: -28px;
left: 15%;
margin: auto;
}
<div class="card-container">
<div class="top-part">
<p>crazy burger</p>
</div>
<div class="middle-part">
<button class="meal-burger-btn">meal</button>
<button class="meal-burger-btn">burger</button>
</div>
<div class="bottom-part">
<p class="price price-active">2.0 bd</p>
<p class="price">1.7 bd</p>
<div class="card-image-container">
<img src="https://www.freepngimg.com/thumb/burger/4-2-burger-png-file.png" alt="">
</div>
<p class="ingredients">ingredients:</p>
<p class="ingredients-2">Beef patty - Toasted burger buns - Bacon - Onion rings - Cheddar cheese - Crazy Sauce</p>
</div>
</div>
Я попробовал решение w3school, и оно не сработало, я также пробовал другой вопрос о переполнении стека, также не сработал
Ответ №1:
.средняя часть можете ли вы удалить функцию position:absolute здесь и попробовать?
Редактировать..
И .еда-бургер-btn -> >слева: удалить функцию
Комментарии:
1. это сообщение с ответом может быть комментарием, поэтому, пожалуйста, продемонстрируйте его с помощью фрагмента кода
Ответ №2:
Я бы рекомендовал избегать абсолютного позиционирования и использовать отрицательное верхнее поле в средней части.
.card-container {
width: 45%;
margin-bottom: 1rem;
background: #fff;
border: 1px solid #707070;
border-radius: 20px;
}
.card-container * {
margin: 0;
padding: 0 8px;
}
/*
-----
top-part
-----
*/
.top-part {
font-size: 1.1rem;
font-weight: 700;
text-align: center;
padding: 2rem 0;
border-bottom: 1px solid #808080;
}
/*
----
meal amp;amp; burger
----
*/
.middle-part {
text-align: center;
-webkit-box-align: center;
-webkit-box-pack: center;
display: -webkit-box;
margin-top: -1.75rem;
margin-left: auto;
margin-right: auto;
}
.meal-burger-btn {
background: #fff;
border: 1px solid #808080;
border-radius: 50%;
width: 3.5rem;
height: 3.5rem;
padding: 0;
line-height: 3.2rem
}
<div class="card-container">
<div class="top-part">
<p>crazy burger</p>
</div>
<div class="middle-part">
<button class="meal-burger-btn">meal</button>
<button class="meal-burger-btn">burger</button>
</div>
<div class="bottom-part">
<p class="price price-active">2.0 bd</p>
<p class="price">1.7 bd</p>
<div class="card-image-container">
<img src="images/IMG_0406_LI.jpg" alt="">
</div>
<p class="ingredients">ingredients:</p>
<p class="ingredients-2">Beef patty - Toasted burger buns - Bacon - Onion rings - Cheddar cheese - Crazy Sauce</p>
</div>
</div>
Ответ №3:
Ну , если вы должны использовать абсолютную позицию, вам нужно придать ей ширину 100%, и она будет использовать все пространство, которое у нее есть, в соответствии с ее родителем, прямо сейчас абсолютно позиционированный div имеет ширину автоматически, и ширина будет расширяться только в соответствии с содержимым, которое в нем есть . Не нужно помещать самого родителя в центр , а скорее централизовать содержимое в нем.
middle-part{
text-align: center;
position: absolute;
-webkit-box-align: center;
-webkit-box-pack: center;
display: -webkit-box;
width:100%;
width:-webkit-fill-available;
}
Помните , что добавление центра в div просто не само по себе , но влияние применяется к содержимому или дочерним элементам в нем.
Кроме того , я бы посоветовал заглянуть в flex-box , он очень полезен, когда вы хотите легко создавать CSS, который следует последовательному шаблону.
Также не используйте поля/сверху/слева/отступы для центрирования , они всегда будут увеличиваться при изменении разрешения , если только вы не используете с ними Авто.