#html #css #html-lists
#HTML #css #html-списки
Вопрос:
Я не уверен, что я сделал не так, но маркеры в неупорядоченных списках смещаются в крайний левый угол страницы, в то время как содержимое остается в центре. Каков наилучший способ переместить маркированные точки обратно в центр, выровняв их по вертикали, чтобы они не выглядели неорганизованными?
Вот ссылка на мой проект codepen:
https://codepen.io/danielanggggg/pen/LYjwOer
HTML
#welcome-section {
width: 100%;
height: 100vh;
top: 10vw;
left: 2vw;
display: block;
margin-top: 10rem;
text-align: center;
}
#navbar {
position: fixed;
top: 0px;
width: 100%;
display: flex;
justify-content: center;
font-size: 20px;
background-color: grey;
}
<section id="welcome-section">
<h1>Daniel Ang</h1>
<h3>Freelance Copywriter</h3>
<p>Hi there! I'm Daniel. I specialize in direct-response copywriting. I believe you are looking<br> for a copywriter to increase your conversion rate and ultimately sell your products or services.</p>
<p>I specialize in writing:</p>
<ul>
<li>Emails</li>
<li>Landing Pages</li>
<li>Sales Letters</li>
<li>Product Descriptions</li>
<li>Facebook/Instagram Ads</li>
</ul>
<p>If you need any of the services above, please don't hesitate to reach out!</p>
</section>
Ответ №1:
Я добавляю приведенный ниже код и исправлен!
ul{
width: max-content;
margin: 0 auto;
}
Вы можете изменять ширину столько, сколько захотите, например width: 20%;
, или использовать width: max-content;
для динамической ширины.
#welcome-section {
width: 100%;
height: 100vh;
top: 10vw;
left: 2vw;
display: block;
margin-top: 10rem;
text-align: center;
}
#navbar {
position: fixed;
top: 0px;
width: 100%;
display: flex;
justify-content: center;
font-size: 20px;
background-color: grey;
}
ul {
width: max-content;
margin: 0 auto;
}
<section id="welcome-section">
<h1>Daniel Ang</h1>
<h3>Freelance Copywriter</h3>
<p>Hi there! I'm Daniel. I specialize in direct-response copywriting. I believe you are looking<br> for a copywriter to increase your conversion rate and ultimately sell your products or services.</p>
<p>I specialize in writing:</p>
<ul>
<li>Emails</li>
<li>Landing Pages</li>
<li>Sales Letters</li>
<li>Product Descriptions</li>
<li>Facebook/Instagram Ads</li>
</ul>
<p>If you need any of the services above, please don't hesitate to reach out!</p>
</section>
Комментарии:
1. Мы можем добиться этого без изменения ширины. Изменение ширины также может привести к переносу текста для большого текста.
2. @Ishtiaq с помощью
width: max-content;
проблема будет исправлена!3.
width: max-content;
все в порядке. Но я говорю оwidth: 20%;
том, для чего добавляетсяul
.4. @Ishtiaq это зависит от проекта и цели, в этой ситуации
width: 20%;
работает нормально, но для динамической ширины использованиеwidth: max-content;
сработало!
Ответ №2:
Другой подход — попытаться использовать Flex — Bootstrap для достижения этой цели. Если вы еще не установили его, не стесняйтесь это сделать, потому что это вам очень поможет. Я бы включил список внутри классов div, как показано ниже:
<div class="d-flex flex-sm-row" >
<div class="d-flex justify-content-center d-flex align-items-end flex-fill">
<ul>
<li>
...
</li>
</ul>
</div>
</div>
Комментарии:
1. зачем ему устанавливать что-то? Это можно сделать в css
2. @Dev Вы правы. Я уже поддержал ответ Киана.
Ответ №3:
Вы можете использовать гибкое поле с направлением столбцов, чтобы получить то, что вы хотите, не указывая ширину для вашего маркированного списка.
#welcome-section {
width: 100%;
/* height is changed to min-height so the actual height will still be calculated based on content when 100vh is smaller than the height of your content */
min-height: 100vh;
top: 10vw;
left: 2vw;
margin-top: 10rem;
display: flex;
flex-direction: column;
align-items: center;
}
Ответ №4:
оберните ul
в div и используйте css, как показано ниже:
#welcome-section {
width: 100%;
height: 100vh;
top: 10vw;
left: 2vw;
display: block;
margin-top: 10rem;
text-align: center;
}
#navbar {
position: fixed;
top: 0px;
width: 100%;
display: flex;
justify-content: center;
font-size: 20px;
background-color: grey;
}
.wrap{
display:flex
}
ul{
margin:auto;
}
<section id="welcome-section">
<h1>Daniel Ang</h1>
<h3>Freelance Copywriter</h3>
<p>Hi there! I'm Daniel. I specialize in direct-response copywriting. I believe you are looking<br> for a copywriter to increase your conversion rate and ultimately sell your products or services.</p>
<p>I specialize in writing:</p>
<div class="wrap">
<ul>
<li>Emails</li>
<li>Landing Pages</li>
<li>Sales Letters</li>
<li>Product Descriptions</li>
<li>Facebook/Instagram Ads</li>
</ul>
</div>
<p>If you need any of the services above, please don't hesitate to reach out!</p>
</section>
Комментарии:
1. вы можете использовать
ul,li{text-align:initial;}
для привязки li к точкам, что означает центрирование только ul
Ответ №5:
Вы можете добавить следующие CSS
для ul
и li
, и это решит вашу проблему.
ul li {
text-align: left;
}
ul {
width: fit-content;
margin: auto;
}
Таким образом, ваш полный код будет;
#welcome-section {
width: 100%;
height: 100vh;
top: 10vw;
left: 2vw;
display: block;
margin-top: 10rem;
text-align: center;
}
#navbar {
position: fixed;
top: 0px;
width: 100%;
display: flex;
justify-content: center;
font-size: 20px;
background-color: grey;
}
ul li {
text-align: left;
}
ul {
width: fit-content;
margin: auto;
}
<section id="welcome-section">
<h1>Daniel Ang</h1>
<h3>Freelance Copywriter</h3>
<p>Hi there! I'm Daniel. I specialize in direct-response copywriting. I believe you are looking<br> for a copywriter to increase your conversion rate and ultimately sell your products or services.</p>
<p>I specialize in writing:</p>
<ul>
<li>Emails</li>
<li>Landing Pages</li>
<li>Sales Letters</li>
<li>Product Descriptions</li>
<li>Facebook/Instagram Ads</li>
</ul>
<p>If you need any of the services above, please don't hesitate to reach out!</p>
</section>
Комментарии:
1. Работает нормально и в соответствии с требованиями