Ярлык кнопки с надписью ← слева

Я хочу сделать метку кнопки, например

<button style = "width:80px">←  back  <button>

тогда я хочу поставить слева и установить back посередине кнопки.

такой как

 ____________
|←   back    |

Я думаю, мне следует использовать Flex, но я немного запутался, потому что

должен быть слева

back должно быть в middle of button, а не в remaining space

Как я могу это сделать?

Вы можете использовать сетку или задать для средней части правое поле такой же ширины, как и элемент со стрелкой влево.

CherryDT 27.06.2024 07:18
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Travel Booking Angular Template один из лучших Travel & Tour booking template in the world. 30+ валидированных HTML5 страниц, которые помогут...
0
1
84
5
Перейти к ответу Данный вопрос помечен как решенный

Ответы 5

Вы действительно можете использовать Flexbox. Ключ заключается в том, чтобы использовать комбинацию свойств justify-content и margin, чтобы разместить стрелку слева и текст в центре.

<button style = "width: 80px; display: flex; align-items: center; justify-content: center; position: relative;">
    <span style = "position: absolute; left: 8px;">←</span>
    <span style = "margin: 0 auto;">back</span>
</button>

Вы можете удалить все, кроме объявлений ширины и положения, и получить тот же результат.

Tim R 27.06.2024 07:27

Спасибо большое, я понял absolute это ключ к успеху

whitebear 27.06.2024 08:39
Ответ принят как подходящий

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

Этим вы достигнете двух вещей

  • Держите стрелку всегда слева
  • Выровняйте текст по центру, не учитывая стрелку слева (поскольку стрелка будет иметь абсолютное положение, текст не будет выравниваться по центру)
<button>
  <span class = "arrow">←</span>
  <span class = "text">back</span>
</button>
button {
  position: relative;
  width: 100px;
  text-align: center;
}

button .arrow {
  position: absolute;
  left: 5px;
}

Вы можете попробовать это:

.grid-container {
  display: grid;
  grid-template-columns: 60px 60px 60px;
  padding: 5px;
}

.grid-item {
  padding: 5px;
  font-size: 20px;
  text-align: center;
}
<!-- With left arrow aligned to the left and the "Back" in the center of the button -->
<button class = "grid-container">
  <span class = "grid-item" style = "text-align:left;">&larr;</span>
  <span class = "grid-item">Back</span>
  <span class = "grid-item"></span>
</button>
<br>

<!-- With the "Back" in the center of the button (for comparison) -->
<button class = "grid-container">
  <span class = "grid-item"></span>
  <span class = "grid-item">Back</span>
  <span class = "grid-item"></span>
</button>

.button {
       display: flex;
       align-items: center;
       justify-content: center;
       width: 100px; /* Adjust the width as needed */
       padding: 5px;
       border: 1px solid #000;
       background-color: #f0f0f0;
       cursor: pointer;
       position: relative;
    }

.button .arrow {
       position: absolute;
       left: 5px; /* Adjust the left position as needed */
     }

.button .text {
       flex-grow: 1;
       text-align: center;
 }
    <button class = "button">
       <span class = "arrow">←</span>
       <span class = "text">back</span>
   </button>

Поскольку обратная стрелка — это всего лишь визуальная подсказка, я бы удалил ее из DOM и вместо этого показал бы в псевдоэлементе before, расположенном слева.

Похоже, что браузеры уже центрируют содержимое кнопок, поэтому в этом фрагменте не нужно добавлять выравнивание текста для заднего текста.

button::before {
  content: '←';
  position: absolute;
  left: 0;
}

button {
  position: relative;
}
<button style = "width:80px">back</button>

Я немного увлекся и решил изучить логические свойства этого вопроса. В итоге у меня получилось следующее (но это не оправдывает новый ответ): демо .

David Thomas 28.06.2024 22:16

Отличный! [но это называется «вперед» справа налево — я полагаю, так оно и есть].

A Haworth 28.06.2024 22:19

Сегодня у меня был доступ только к одному человеку, который вырос в Египте и говорил по-арабски (на языке справа налево), и я не подумал проверить, считаются ли термины «вперед» и «назад», но я это сделал. Спросите его, какое направление «вперед» и «назад» будет на его языке, и он любезно подтвердил мои предположения о том, что «вперед» по направлению будет указывать налево, а назад — направо. Однако это не обязательно относится к любому другому языку RTL.

David Thomas 28.06.2024 23:35

Другие вопросы по теме