Вот так выглядит сайт.
В первой строке флажка последний флажок и его метка не связаны друг с другом, как я могу поместить флажок и его метку в одну строку.
Это css флажка
.checkboxContainer {
display: inline-block;
padding-top: 80px;
padding-left: 40px;
padding-right: 30px;
padding-inline: 50px;
}
.checkboxContainer label {
font-size: 25px;
padding-right: 10px;
}
То, как я создал флажок (я сократил данные)
const checkboxContainer=document.querySelector(".checkboxContainer");
let nutritions=[{"id":1,"label":"食品分類"},...];
for (let tmp of nutritions) {
const checkboxId = "checkbox"+tmp.id;
const checkbox='<input type = "checkbox" id = "'+checkboxId+'" class = "checkbox-input">';
const label='<label for"'+checkboxId+'">'+tmp.label+'</label>';
checkboxContainer.innerHTML+=checkbox+label;
}
Вы должны обернуть флажок и метку в один и тот же элемент, а затем сделать эту оболочку свойством display: inline-block
:
const checkboxContainer = document.querySelector(".checkboxContainer");
let nutritions = [{
"id": 1,
"label": "食品分類"
}, {
"id": 1,
"label": "食品分類類分"
}, {
"id": 1,
"label": "食品分類分"
}, {
"id": 1,
"label": "食品分類分"
}, {
"id": 1,
"label": "食品分類品品類"
}, {
"id": 1,
"label": "食品"
}, {
"id": 1,
"label": "食品分類食分"
}, {
"id": 1,
"label": "食品分類"
}, {
"id": 1,
"label": "食類分類"
}, {
"id": 1,
"label": "食品分類類類類類分"
}, {
"id": 1,
"label": "食品分類"
}, {
"id": 1,
"label": "食品分類"
}, {
"id": 1,
"label": "食品分類"
}, {
"id": 1,
"label": "食品分類"
}, {
"id": 1,
"label": "食品分類"
}, {
"id": 1,
"label": "食品分類"
}, {
"id": 1,
"label": "食品分類"
}, {
"id": 1,
"label": "食品分類"
}, {
"id": 1,
"label": "食品分類"
}, {
"id": 1,
"label": "食品分類"
}, {
"id": 1,
"label": "食品分類"
}, {
"id": 1,
"label": "食品分類"
}, {
"id": 1,
"label": "食品分類"
}, {
"id": 1,
"label": "食品分類"
}, {
"id": 1,
"label": "食品分類"
}, ];
for (let tmp of nutritions) {
const checkboxId = "checkbox" + tmp.id;
const checkbox = '<input type = "checkbox" id = "' + checkboxId + '" class = "checkbox-input">';
const label = '<label for"' + checkboxId + '">' + tmp.label + '</label>';
checkboxContainer.innerHTML += `<div>${checkbox + label}</div>`;
}
.checkboxContainer {
display: block;
padding-top: 80px;
padding-left: 40px;
padding-right: 30px;
padding-inline: 50px;
text-align: center;
}
.checkboxContainer div {
display: inline-block;
padding-right: 10px;
}
.checkboxContainer label {
font-size: 25px;
}
<div class = "checkboxContainer">
</div>
Вы можете решить проблему, а также упростить свой код, реструктурировав html.
Элементы метки могут содержать элемент ввода.
Итак, эта исходная разметка:
<input type = "checkbox" id = "checkbox-1">
<label for = "checkbox-1"> Text</label>
Может быть упрощено до:
<label><input type = "checkbox">Text</label>
И это группирует флажок и метку, делая ненужными атрибуты for
и id
. Затем, применяя css white-space: nowrap к меткам, проблема решена.
Фрагмент
JavaScript опущен, так как он не имеет отношения к решению.
body {
font-family: sans-serif;
}
h5 {
margin-bottom: 0;
color: blue;
}
.checkboxContainer {
width: 16rem;
border-right: 2px dotted red;
overflow: hidden;
}
.checkboxContainer label {
white-space: nowrap;
margin-right: 1rem;
}
<h5>Modified</h5>
<div class = "checkboxContainer">
<label>
<input type = "checkbox">1-label
</label>
<label>
<input type = "checkbox">2-label
</label>
<label>
<input type = "checkbox">3-label
</label>
<label>
<input type = "checkbox">4-label
</label>
<label>
<input type = "checkbox">5-label
</label>
<label>
<input type = "checkbox">6-VeryLongLabelNameToTestHowItWrapsText
</label>
<label>
<input type = "checkbox">7-label
</label>
<label>
<input type = "checkbox">8-label
</label>
<label>
<input type = "checkbox">9-label
</label>
<label>
<input type = "checkbox">10-label
</label>
</div>
<h5>Original</h5>
<div class = "checkboxContainer">
<input type = "checkbox" id = "c1">
<label for = "c1">1-label</label>
<input type = "checkbox" id = "c2">
<label for = "c2">2-label</label>
<input type = "checkbox" id = "c3">
<label for = "c3">3-label</label>
<input type = "checkbox" id = "c4">
<label for = "c4">4-label</label>
<input type = "checkbox" id = "c5">
<label for = "c5">5-label</label>
<input type = "checkbox" id = "c6">
<label for = "c6">6-VeryLongLabelNameToTestHowItWrapsText</label>
<input type = "checkbox" id = "c7">
<label for = "c7">7-label</label>
<input type = "checkbox" id = "c8">
<label for = "c8">8-label</label>
<input type = "checkbox" id = "c9">
<label for = "c9">9-label</label>
<input type = "checkbox" id = "c10">
<label for = "c10">10-label</label>
</div>
@henryChan - я думаю, что в вашей новой версии есть проблема с медиа-запросом. Я сообщу вам, если найду проблему.
После использования кода галочки автоматически изменили строку, но позже, когда я зашел на сайт с телефона, галочки встали в строку, а не отображались так, как я вижу на компьютере. Вы знаете, как решить эту проблему?