Позиционирование текста и изображения по центру по горизонтали с использованием position: relative

#html #css #css-position

#HTML #css #css-position

Вопрос:

Мне было интересно, как я могу расположить текст по центру по горизонтали. По центру по горизонтали с изображением. Я не хочу использовать position: absolute атрибут. Это связано с тем, что длина правого и левого текста может изменяться, а для того, чтобы иметь абсолютный атрибут, вам нужна фиксированная ширина / размер.

 body {
    padding: 0;
    margin: 0;
}

.right-text {
    position: relative;
    display: inline-block;
    font-family: arial;
    font-size: 13px;
}

.icon {
    position: relative;
    display: inline-block;
    width: 32px;
    height: 32px;
    background: url("https://i.imgur.com/VXlnn8a.png");
}

.left-text {
    position: relative;
    display: inline-block;
    font-family: arial;
    font-size: 13px;
    font-weight: 700;
}  
 <div class="right-text">Right</div><div class="icon"></div><div class="left-text">Left</div>  

Комментарии:

1. вы можете добавить выравнивание текста по центру; в css основного текста body { отступ: 0; поле: 0; выравнивание текста по центру; }

2. Я думаю, вам нужен вертикальный центр для содержимого слева и справа от изображения

3. @HUSSAIN text-align: center центрирует текст по вертикали.

4. @Alex я просто гуглю это, чтобы подтвердить, text-align: center используется для центрирования текста по горизонтали, в то время как я думаю, вам нужно выровнять его по центру по вертикали

Ответ №1:

Вы можете использовать flexbox для выравнивания элементов по горизонтали по центру, добавив приведенный ниже код к родительскому div

 .parent{
   display:flex;
   align-items: center;
}
  

Это текущий фрагмент вашего кода, содержащий эти изменения

    

    

    body{
           padding: 0;
           margin: 0;
           font-family: arial;
        }  
.content{
       display: flex;
       align-items: center;
    }

.right-text {
        font-size: 13px;
    }

    .icon {
        width: 32px;
        height: 32px;
        background: url("https://i.imgur.com/VXlnn8a.png");
    }

.left-text {
        font-size: 13px;
        font-weight: 700;
    }  
         <div class="content">
           <div class="right-text">Right</div>
           <div class="icon"></div>
           <div class="left-text">Left</div>
        </div>  

Комментарии:

1. Приведенный выше фрагмент кода не работает ни по горизонтали, ни по вертикали.

Ответ №2:

Вы можете просто добавить контейнер flexbox и установить для его свойства align-items значение center.

 <div class="container">
  <div class="right-text">Right</div>
  <div class="icon"></div>
  <div class="left-text">Left</div>
</div>
  

И это контейнер класса:

 .container{
  display: flex;
  align-items: center;
  justify-content: center;
}
  

Комментарии:

1. Вы неправильно поняли вопрос. Не то, о чем я прошу

Ответ №3:

Привет, если вы хотите выровнять по вертикали, вот обновленный фрагмент

 body {
    padding: 0;
    margin: 0;
}

.right-text {
    position: relative;
    display: inline-block;
    font-family: arial;
    font-size: 13px;
}

.icon {
    position: relative;
    display: inline-block;
    width: 32px;
    height: 32px;
    background: url("https://i.imgur.com/VXlnn8a.png");
    top: 10px;
    margin: 0 5px;
}

.left-text {
    position: relative;
    display: inline-block;
    font-family: arial;
    font-size: 13px;
    font-weight: 700;
}  
 <div class="right-text">Right</div><div class="icon"></div><div class="left-text">Left</div>  

Комментарии:

1. Есть ли способ сделать это без изменения положения изображения. Таким образом, изменяется только положение текста

2. Да, вместо указания top в классе image используйте свойство в обоих .left-text и .right-text вместо положительного значения используйте отрицательное значение в случае текста. Единственное дополнительное свойство, которое я привел ниже .right-text { top: -10px; } .left-text { top: -10px; }

Ответ №4:

На самом деле вам нужно обернуть ваш right-text , icon и left-text элемент в childContainer , а затем обернуть ваш childContainer элемент в parentContainer wrap.

 <div class="parentContainer">
  <div class="childContainer">
    <div class="right-text">Right</div><div class="icon"></div><div class="left-text">Left</div>
  </div>
</div>
  

Далее вам нужно применить FlexBox с центром justify-content и align-items значением, а также добавить height: 100vh . Упомянутые изменения применяются к приведенному ниже фрагменту кода. Попробуйте это, я надеюсь, это вам поможет. Спасибо

 body {
    padding: 0;
    margin: 0;
}

.right-text {
    position: relative;
    display: inline-block;
    font-family: arial;
    font-size: 13px;
}

.icon {
    position: relative;
    display: inline-block;
    width: 32px;
    height: 32px;
    background: url("https://i.imgur.com/VXlnn8a.png");
}

.left-text {
    position: relative;
    display: inline-block;
    font-family: arial;
    font-size: 13px;
    font-weight: 700;
}

.parentContainer {
  display: flex;
  height: 100vh;
  justify-content: center;
  align-items: center;
}  
 <div class="parentContainer">
  <div class="childContainer">
    <div class="right-text">Right</div><div class="icon"></div><div class="left-text">Left</div>
  </div>
</div>