#css #css-grid
#css #css-grid
Вопрос:
Я пытаюсь создать кнопку, которая изменит макет сетки css. У меня есть класс с именем container с информацией о моей сетке.
Я хочу изменить сетку нажатием кнопки либо с помощью html и css, либо с помощью js.
Есть ли такой же способ, как наведение курсора мыши, нажмите на кнопку и измените css для этого щелчка.
Комментарии:
1. Да, вероятно, есть способ. Какие способы вы пробовали до сих пор? Пожалуйста, можете ли вы поделиться ими?
2. Я попытался создать html-кнопку с классом «mybtn. Затем я в js попытался зарегистрировать щелчок. но я не уверен, как изменить css с помощью js и ссылаться на сетку. Я смог изменить цвет текста в стиле, но это все. Я очень новичок во всем этом, и я пытаюсь сосредоточиться на onclick, поскольку я видел несколько способов щелкнуть объект на странице.
Ответ №1:
Если вы хотите, чтобы это было только на время нажатия, тогда вам следует попробовать что-то вроде этого (css):
#myElement:active{
/*Code Here*/
}
Если вы хотите, чтобы она оставалась такой после щелчка, я бы использовал js. Пример:
HTML
<button onclick="myFunction()">Click Me</button>
и js
function myFunction(){
document.getElementById('myElement').style.gridTemplateColumns = "auto auto auto"
}
Рабочий пример
function changeGrid(){
document.getElementById("grid").style.gridTemplateColumns = "auto auto auto"
}
#grid{
display: grid;
grid-template-columns: auto auto;
}
<button onclick="changeGrid()">Change Grid</button>
<div id="grid">
<div>
hi
</div>
<div>
hello
</div>
<div>
yello
</div>
<div>
hey
</div>
<div>
wassup
</div>
<div>
yo
</div>
</div>
Комментарии:
1. Есть ли способ, чтобы это работало по имени класса вместо идентификатора? Также я получаю эту ошибку: Uncaught TypeError: document.getElementsById не является функцией
2. да, вы могли бы попробовать
document.querySelectorAll('.container')
, илиdocument.getElementsByClassname()
( developer.mozilla.org/en-US/docs/Web/API/Document /… и developer.mozilla.org/en-US/docs/Web/API/Document /… ). Кто-нибудь, не стесняйтесь улучшать этот js, это не моя компетенция3. кроме того, @ighc,
document.getElementsById
это не функция, аdocument.getElementById
есть. Единственное число для элементов, а не множественное число4. и не забывайте, что вы также можете добавить идентификатор к элементу, у которого есть класс, если есть только один из них
5. Спасибо! Я смог заставить это работать. Это также способ изменить области шаблона сетки?