У меня есть этот код
<!DOCTYPE html>
<html lang = "cs">
<head>
<meta charset = "UTF-8">
<meta name = "viewport" content = "width=device-width, initial-scale=1.0">
<style>
@font-face {
font-family: 'Styrene Black';
src: url('StyreneAWeb-Black.ttf') format('truetype');
}
@font-face {
font-family: 'Styrene Bold';
src: url('StyreneAWeb-Bold.ttf') format('truetype');
}
@font-face {
font-family: 'Styrene Medium';
src: url('StyreneAWeb-Medium.ttf') format('truetype');
}
body, html {
margin: 0;
padding: 0;
width: 100%;
height: 100%;
font-family: 'Styrene Bold', Arial, sans-serif;
color: white;
}
.container {
background: url('pozadi2.png') no-repeat center center;
background-size: cover;
padding-left: 4rem;
padding-top: 3rem;
width: 1296px;
height: 768px;
display: flex;
flex-direction: column;
justify-content: space-between;
align-items: flex-start;
text-align: left;
}
.heading {
font-size: 4rem;
font-family: 'Styrene Bold';
margin-bottom: 1rem;
}
.time-container {
display: flex;
align-items: flex-end;
margin-bottom: 0rem;
}
.number {
font-size: 4rem;
font-family: 'Styrene Bold';
margin-right: 0.5rem;
min-width: 6rem;
text-align: left;
}
.unit {
font-size: 4rem;
font-family: 'Styrene Medium';
margin-right: 1.5rem;
}
.note {
font-size: 2rem;
font-family: 'Styrene Medium';
margin-bottom: 0.5rem;
color: #233254;
line-height: 1.5;
}
.note2 {
font-size: 2rem;
font-family: 'Styrene Medium';
margin-bottom: 2rem;
color: #233254;
line-height: 1.5;
}
.text-black {
color: #233254;
font-family: 'Styrene Black';
}
.note-container {
margin-top: auto;
}
</style>
<title>Title</title>
</head>
<div class = "container" id = "timer-container">
<div id = "month-display" class = "heading"></div>
<div class = "time-container" id = "days-container">
<div id = "days" class = "number">1</div>
<div id = "days-unit" class = "unit">den</div>
</div>
<div class = "time-container" id = "hours-container">
<div id = "hours" class = "number">20</div>
<div id = "hours-unit" class = "unit">hodin</div>
</div>
<div class = "time-container" id = "minutes-container">
<div id = "minutes" class = "number">12</div>
<div id = "minutes-unit" class = "unit">minut</div>
</div>
<div class = "time-container" id = "seconds-container">
<div id = "seconds" class = "number">22</div>
<div id = "seconds-unit" class = "unit">vteřin</div>
</div>
</div>
</html>
и мне нужно выровнять любое однозначное число так, чтобы оно было на второй позиции (например, 01, но я не хочу показывать «0», я хочу только «1», но чтобы оно было на второй позиции).
Как я могу этого добиться?
Я попробовал несколько изменений в CSS, а также попробовал выравнивание текста: верно, но это как-то запутало. Я не могу изменить положение двухзначного числа, это идеально, мне просто нужно изменить однозначное число, чтобы оно было в вторая позиция.
Вы можете использовать следующий подход, чтобы гарантировать, что однозначное число выровнено по второй позиции без отображения ведущего нуля:
<div id = "days" class = "number"><span style = "opacity: 0;">0</span>1</div>
Использование стиля непрозрачности гарантирует, что ноль будет занимать пространство, но останется невидимым. Таким образом, выравнивание сохраняется без отображения нуля.
Я задокументировал изменения в CSS.
color: white
удалено из body,html
align-text: left
для номера класса изменен на align-text: right
.@font-face {
font-family: 'Styrene Black';
src: url('StyreneAWeb-Black.ttf') format('truetype');
}
@font-face {
font-family: 'Styrene Bold';
src: url('StyreneAWeb-Bold.ttf') format('truetype');
}
@font-face {
font-family: 'Styrene Medium';
src: url('StyreneAWeb-Medium.ttf') format('truetype');
}
body,
html {
margin: 0;
padding: 0;
width: 100%;
height: 100%;
font-family: 'Styrene Bold', Arial, sans-serif;
/* color: white; REMOVED */
}
.container {
background: url('pozadi2.png') no-repeat center center;
background-size: cover;
padding-left: 4rem;
padding-top: 3rem;
width: 1296px;
height: 768px;
display: flex;
flex-direction: column;
justify-content: space-between;
align-items: flex-start;
text-align: left;
}
.heading {
font-size: 4rem;
font-family: 'Styrene Bold';
margin-bottom: 1rem;
}
.time-container {
display: flex;
align-items: flex-end;
margin-bottom: 0rem;
}
.number {
font-size: 4rem;
font-family: 'Styrene Bold';
margin-right: 0.5rem;
min-width: 6rem;
text-align: right; /* CHANGED */
}
.unit {
font-size: 4rem;
font-family: 'Styrene Medium';
margin-right: 1.5rem;
}
.note {
font-size: 2rem;
font-family: 'Styrene Medium';
margin-bottom: 0.5rem;
color: #233254;
line-height: 1.5;
}
.note2 {
font-size: 2rem;
font-family: 'Styrene Medium';
margin-bottom: 2rem;
color: #233254;
line-height: 1.5;
}
.text-black {
color: #233254;
font-family: 'Styrene Black';
}
.note-container {
margin-top: auto;
}
<div class = "container" id = "timer-container">
<div id = "month-display" class = "heading"></div>
<div class = "time-container" id = "days-container">
<div id = "days" class = "number">1</div>
<div id = "days-unit" class = "unit">den</div>
</div>
<div class = "time-container" id = "hours-container">
<div id = "hours" class = "number">20</div>
<div id = "hours-unit" class = "unit">hodin</div>
</div>
<div class = "time-container" id = "minutes-container">
<div id = "minutes" class = "number">12</div>
<div id = "minutes-unit" class = "unit">minut</div>
</div>
<div class = "time-container" id = "seconds-container">
<div id = "seconds" class = "number">22</div>
<div id = "seconds-unit" class = "unit">vteřin</div>
</div>
</div>
Простое решение:
выравнивание текста: по правому краю; поле справа: 1,5рем;
.number {
font-size: 4rem;
font-family: 'Styrene Bold';
margin-right: 1.5rem;
min-width: 6rem;
text-align: right;
}
Как уже упоминал Skyunbydev, вы можете использовать скрытый 0, чтобы соответствовать цифрам. Или, если ваши цифры будут динамическими, то можно установить дополнительный символ с помощью JavaScript. В следующем фрагменте у меня есть:
background-color
, чтобы сделать текст видимым, в html,body
CSS.window
.<!DOCTYPE html>
<html lang = "cs">
<head>
<meta charset = "UTF-8">
<meta name = "viewport" content = "width=device-width, initial-scale=1.0">
<style>
@font-face {
font-family: 'Styrene Black';
src: url('StyreneAWeb-Black.ttf') format('truetype');
}
@font-face {
font-family: 'Styrene Bold';
src: url('StyreneAWeb-Bold.ttf') format('truetype');
}
@font-face {
font-family: 'Styrene Medium';
src: url('StyreneAWeb-Medium.ttf') format('truetype');
}
body, html {
margin: 0;
padding: 0;
width: 100%;
height: 100%;
font-family: 'Styrene Bold', Arial, sans-serif;
color: white;
background-color: orange;
}
.container {
background: url('pozadi2.png') no-repeat center center;
background-size: cover;
padding-left: 4rem;
padding-top: 3rem;
width: 1296px;
height: 768px;
display: flex;
flex-direction: column;
justify-content: space-between;
align-items: flex-start;
text-align: left;
}
.heading {
font-size: 4rem;
font-family: 'Styrene Bold';
margin-bottom: 1rem;
}
.time-container {
display: flex;
align-items: flex-end;
margin-bottom: 0rem;
}
.number {
font-size: 4rem;
font-family: 'Styrene Bold';
margin-right: 0.5rem;
min-width: 6rem;
text-align: left;
}
.unit {
font-size: 4rem;
font-family: 'Styrene Medium';
margin-right: 1.5rem;
}
.note {
font-size: 2rem;
font-family: 'Styrene Medium';
margin-bottom: 0.5rem;
color: #233254;
line-height: 1.5;
}
.note2 {
font-size: 2rem;
font-family: 'Styrene Medium';
margin-bottom: 2rem;
color: #233254;
line-height: 1.5;
}
.text-black {
color: #233254;
font-family: 'Styrene Black';
}
.note-container {
margin-top: auto;
}
</style>
<title>Title</title>
</head>
<body>
<div class = "container" id = "timer-container">
<div id = "month-display" class = "heading"></div>
<div class = "time-container" id = "days-container">
<div id = "days" class = "number">1</div>
<div id = "days-unit" class = "unit">den</div>
</div>
<div class = "time-container" id = "hours-container">
<div id = "hours" class = "number">20</div>
<div id = "hours-unit" class = "unit">hodin</div>
</div>
<div class = "time-container" id = "minutes-container">
<div id = "minutes" class = "number">12</div>
<div id = "minutes-unit" class = "unit">minut</div>
</div>
<div class = "time-container" id = "seconds-container">
<div id = "seconds" class = "number">22</div>
<div id = "seconds-unit" class = "unit">vteřin</div>
</div>
</div>
<script>
function reArrangeDigits() {
const digitDivs = document.getElementsByClassName('number');
for(let i=0; i<digitDivs.length; i++) {
const digit = Number(digitDivs[i].innerHTML);
if (!isNaN(digit) && digit < 10) {
digitDivs[i].innerHTML = '<span style = "opacity: 0;">0</span>' + digit;
}
}
}
window.addEventListener('load', reArrangeDigits);
</script>
</body>
</html>
Сначала вам нужно установить .number
на display: flex
и text-align: right
. Большую часть времени у меня это работает с простой структурой HTML, такой как ваша.
В вашем HTML нет тега body. Пожалуйста, добавьте его и создайте воспроизводимый фрагмент, используя <>. Возможно, вы можете использовать justify-content: right;