我正在通過freecodecamp並嘗試製作電子計算器,但仍然很早,只是試圖調整大小和佈局。CSS Grid調整網格內的按鈕大小
我正在使用CSS網格的按鈕,但有一個問題,當我試圖調整按鈕的大小。
我有一個javascript函數,爲每個按鈕在要顯示的計算器上創建一個<button>
元素,然後在相應的CSS網格區域屬性中指定匹配網格。
的佈局和功能完美的工作,問題就來了,當我試圖調整「等於」按鈕,位於第4列和行4和5
按鈕佔用1列,但兩行的網格。
只要我改變了css按鈕的height
屬性,那個特定的按鈕就會摺疊成1列和1行。
希望這是有道理的,如果不是,這裏是codepen:https://codepen.io/rorschach1234/pen/gxbbgg
和HTML:
<head>
<link href="https://fonts.googleapis.com/css?family=Orbitron" rel="stylesheet">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
</head>
<body>
<div class="container">
<h2 class="top">Electronic Calculator</h2>
<div class="display">
<h2>display</h2>
</div>
<div class="buttons">
</div>
</div>
</body>
的CSS:
$calc-font: 'Orbitron';
.container {
margin: 5% 33%;
background: grey;
}
.top {
font-family: $calc-font;
text-align: center;
padding-top: 5px;
}
.display {
margin: 3% 5%;
padding-bottom: 3%;
background: white;
text-align: right;
font-family: $calc-font;
}
.buttons {
margin: 0 5%;
padding-bottom: 3%;
display: grid;
grid-template-columns: repeat(4, 1fr);
grid-template-rows: repeat(5, 1fr);
grid-template-areas:
"clearall clearD divide multiply"
"seven eight nine minus"
"four five six add"
"one two three equals"
"zero zero period equals";
}
button {
height: 25px;
}
和JavaScript:
var btnClasses = ["clearall", "clearD", "divide", "multiply", "seven", "eight", "nine", "minus", "four", "five", "six", "add", "one", "two", "three", "equals", "zero", "period"];
var buttons = ["AC", "CE", "÷", "×", 7, 8, 9, "−", 4, 5, 6, "+", 1, 2, 3, "=", 0, "."];
/*function creates a button and then adds the corresponding grid-area to match the grid-template-areas layout in CSS*/
function createButtons() {
for (var i = 0; i<btnClasses.length; i++) {
$(".buttons").append("<button class=\"" + btnClasses[i] + "\">" + buttons[i] + "</button>");
$("." + btnClasses[i]).css("grid-area", btnClasses[i]);
$("." + btnClasses[i]).css("font-family", "Orbiton");
};
};
$(document).ready(function() {
createButtons();
});
感謝您的幫助!
這工作完美,非常感謝你。我想我沒有完全理解網格系統的尺寸是如何工作的。我一直在想它像一個分數/ 12的bootstrap。爲了將來的參考,這個'grid-template-rows:repeat(5,25px);'如果我決定不想使用'grid-template-areas:'聲明每個行和列空間的方式,而是希望對每個類使用小數聲明,則仍然有效:.clearall {grid-column: 1/2; grid-row:1/2;}? –
不確定。有點太假設。測試一下。如果您遇到問題,請發佈另一個問題 –