** Я новичок в веб-разработке, и я пробую небольшой проект, чтобы применить то, что я узнал до сих пор, но я наткнулся на кирпичную стену, чувствую себя разочарованным и ничему не научился. **
Я хочу расположить или выделить свой h1 и p
справа от моего изображения, как мне это сделать? А также центрировать мое изображение и текст посередине страницы. Я очень смущен. Я сдался через некоторое время и попросил
Я узнал о flexbox много месяцев назад и забыл об этом, часть кода здесь была предоставлена
Я не пишу на Stack Overflow, потому что беспокоюсь и нервничаю из-за общественного мнения. Пожалуйста, простите меня за любые ошибки.
Ниже мой код HTML и CSS. Я все еще борюсь с Bootstrap, поэтому я не использую его в этом проекте.
.my-info {
display: flex;
align-items: center;
}
.my-info img {
border-radius: 50%;
width: 25%;
height: auto;
margin-right: 20px;
}
.my-info div {
display: flex;
flex-direction: column;
justify-content: center;
}
h1 {
color: #f1efe8;
font-family: 'Droid serif', serif;
font-size: 36px;
font-weight: 400;
font-style: italic;
line-height: 44px;
margin: 0 0 12px;
text-align: center;
}
.heading {
background-image: url("https://mcdn.wallpapersafari.com/medium/50/40/Tnh47t.jpg");
background-size: cover;
width: 100vw;
height: 50vh;
display: flex;
justify-content: center;
align-items: center;
}
.name {
font-size: 36px;
font-weight: 400;
color: black;
font-family: Verdana, Geneva, Tahoma, sans-serif;
margin: 0;
}
.job {
font-size: 26px;
font-weight: 400;
color: black;
font-family: Verdana, Geneva, Tahoma, sans-serif;
text-align: center;
margin: 0;
}
<div class = "heading">
<h1>The World of me: Portfolio</h1>
</div>
<div class = "my-info">
<div>
<img class = "me" src = "CSS/images/me.jpg" alt = "Nevin">
</div>
<div class = "personal">
<h1 class = "name">My name is <strong>Nevin Dabechuran</strong></h1>
<p class = "job"><em>A Web designer</em></p>
</div>
</div>
Я хочу, чтобы это выглядело примерно так:Изображение с текстом рядом с ним
во-первых, не будь таким. у тебя две проблемы, да.
1. сделайте h1
и p
справа от изображения. для этого просто измените порядок элементов html
:
<div class = "my-info">
<div class = "personal">
<h1 class = "name">My name is <strong>Nevin Dabechuran</strong></h1>
<p class = "job"><em>A Web designer</em></p>
</div>
<div>
<img class = "me" src = "CSS/images/me.jpg" alt = "Nevin">
</div>
центрируя их,
.my-info {
display: flex;
justify-content:center;
}
это иг. просто не стесняйтесь задавать дополнительные сомнения. ведь это место построено из сомнений и вопросов😂
вы указали ширину изображения в %, поэтому он занимает так много места. Также я добавил код для выравнивания содержимого
<div class = "heading">
<h1>The World of me: Portfolio</h1>
</div>
<div class = "my-info">
<div>
<img class = "me" src = "https://png.pngtree.com/element_pic/17/09/23/fa56a61d288b1922002f4f7edf5ce3e6.jpg" alt = "Nevin">
</div>
<div class = "personal">
<h1 class = "name">My name is <strong>Nevin Dabechuran</strong></h1>
<p class = "job"><em>A Web designer</em></p>
</div>
</div>
.my-info {
display: flex;
align-items: center;
justify-content: start;
}
.my-info img {
border-radius: 50%;
width: 70px;
height: auto;
margin-right: 20px;
}
.my-info div {
display: flex;
flex-direction: column;
justify-content: center;
}
h1 {
color: #f1efe8;
font-family: 'Droid serif', serif;
font-size: 36px;
font-weight: 400;
font-style: italic;
line-height: 44px;
margin: 0 0 12px;
text-align: center;
}
.heading {
background-image: url("https://mcdn.wallpapersafari.com/medium/50/40/Tnh47t.jpg");
background-size: cover;
width: 100vw;
height: 50vh;
display: flex;
justify-content: center;
align-items: center;
}
.name {
font-size: 36px;
font-weight: 400;
color: black;
font-family: Verdana, Geneva, Tahoma, sans-serif;
margin: 0;
}
.job {
font-size: 26px;
font-weight: 400;
color: black;
font-family: Verdana, Geneva, Tahoma, sans-serif;
text-align: center;
margin: 0;
}
.personal{
align-items:start;
}
Ваш css размещает ваше имя и элементы работы справа от вашего изображения, но чтобы переместить его вправо от родительского div, используйте display:block
и margin-left:auto
. Кажется, вы также хотите правильное поле, чтобы мы могли установить оба с помощью margin-inline
.
Чтобы центрировать ваш .my-info
div, все, что вам нужно сделать, это уменьшить его до ширины содержимого (по умолчанию это 100% ширины экрана, так что он уже, так сказать, «в центре»). Затем мы используем margin: auto
, чтобы применить поля одинакового размера с обеих сторон.
Центрирование вещей исторически было PITA в веб-разработке. Вот статья от w3c , чтобы помочь вам. Также есть хорошая утилита под названием howtocenterincss, которую вы можете использовать для автоматической генерации CSS для достижения того, что вы ищете.
У вас также есть несколько лишних css. Я прокомментировал это и аннотировал, чтобы объяснить, как это работает.
Также рекомендуется добавить сброс CSS в ваш код, например. добавление margin:0 к вашему элементу body. Он устраняет некоторую непредсказуемость из таблицы стилей пользовательского агента . Вот короткое видео от Кевина Пауэлла, чтобы объяснить это (если вы еще не подписаны на него, он отлично подходит для начинающих разработчиков и новичков — его курсы того стоят). Удачи в вашей карьере.
P.S. просто прокомментируйте, если у вас есть какие-либо вопросы, и я отвечу на них.
body {
/* you use this in a few elements so we'll set this as the default in your body, then you only need to add font-family if you need to change away from this */
font-family: Verdana, Geneva, Tahoma, sans-serif;
color:black;
}
* {
/* css reset - set margin to 0. It means you can remove margin:0 from your h1 and p classes below */
margin:0;
}
.my-info {
display: flex;
align-items: center;
/*To center your info container, set the width to shrink to the content and then use margin:auto to add space evenly left and right.*/
width: fit-content;
margin:auto;
}
.my-info img {
border-radius: 50%;
width: 25%;
/* height: auto; not needed - height: auto is the default */
display:block; /*this allows us to position the image. Setting images to block level elements is recommended imho*/
margin-inline: auto 20px;
/*margin-right: 20px; deleted this, already declared in margin-inline */
}
.my-info div {
/* Not needed - so deleted it my.info h1 already aligns your text in the center so you don't need to do this here. It's already covered
display: flex;
flex-direction: column;
justify-content: center;
*/
}
/* changed this from h1 to .heading-title and added the class to your html - this is because it's also styling the h1 in your 'my-info' div so we end up styling that one twice */
.heading-title {
color: #f1efe8;
font-family: 'Droid serif', serif;
font-size: 36px;
line-height: 44px;
margin: 0 0 12px;
/* text-align: center; not needed as we've used place-items:center in the .heading div which automatically centers the content */
}
.heading {
background-image: url("https://mcdn.wallpapersafari.com/medium/50/40/Tnh47t.jpg");
background-size: cover;
/*width: 100vw; you don't need this as block level elements are 100% of the width of the viewport by default */
height: 50vh;
/*display: flex;
justify-content: center;
align-items: center; use grid here, you can save yourself a line of CSS :-) */
display:grid;
place-items:center;
}
.name {
font-size: 36px;
}
.job {
font-size: 26px;
text-align: center;
}
.name, .job, .heading-title {
/* we keep repeating this in your css above. Just declare it in one line so if you need to change it, you only need to change it once */
font-style: italic;
font-weight: 400;
}
<div class = "heading">
<h1 class = "heading-title">The World of me: Portfolio</h1>
</div>
<div class = "my-info">
<div>
<img class = "me" src = "https://picsum.photos/id/433/200/200" alt = "Nevin">
</div>
<div class = "personal">
<h1 class = "name">My name is <strong>Nevin Dabechuran</strong></h1>
<p class = "job"><em>A Web designer</em></p>
</div>
</div>
Вы можете добиться этого, используя float (по-старому) или flexbox.
Вот пример flexbox, основанный на вашем
Я хочу, чтобы это выглядело примерно так
.profile {
display: flex;
align-items: center;
column-gap: 10px;
margin: 20px;
border: 1px solid black;
padding: 5px;
width: 300px;
background: #eaeaea;
}
.profile .thumb {
width: 100px;
height: 100px;
}
.profile .thumb img {
width: 100%;
height: auto;
}
.profile .name {
margin: 0;
font-family: serif;
font-weight: bold;
font-size: 18px;
color: black;
}
.profile .job {
margin: 0;
font-family: sans-serif;
font-size: 14px;
color: black;
}
<div class = "profile">
<div class = "thumb">
<img src = "https://randomuser.me/api/portraits/lego/1.jpg" alt = "Nevin">
</div>
<div class = "info">
<h1 class = "name">Nevin Dabechuran</h1>
<p class = "job">Web designer</p>
</div>
</div>
Большое спасибо всем за вашу помощь. Буду следить и редактировать код. Очень признателен. Я знаком с курсами Кевина Пауэллса. Я снова пройду курс повышения квалификации, чтобы вернуться к этому.