本教程释以何法,用HTML5与CSS构建雅致计算器之界面。
HTML结构(所筑之形)
<div class="container">
<div class="calculator">
<div class="display">
<div class="track">
12 × 4 =
</div>
<div class="result">
48
</div>
</div>
<div class="buttons-container">
<ol>
<li class="orange">C</li>
<li class="orange">√</li>
<li class="orange">%</li>
<li class="orange">+/-</li>
<li>7</li>
<li>8</li>
<li>9</li>
<li class="orange">÷</li>
<li>4</li>
<li>5</li>
<li>6</li>
<li class="orange">×</li>
<li>1</li>
<li>2</li>
<li>3</li>
<li class="orange">-</li>
<li>0</li>
<li>·</li>
<li class="orange">+</li>
<li class="orange">=</li>
</ol>
</div>
</div>
</div>
吾将界面分三主要部分:
-
.calculator→ 计算器主体 -
.display→ 显计算与结果 -
.buttons-container→ 置诸键于格中
吾择有序之列以列计算器之钮.
基础样式
body {
margin: 0;
padding: 0;
background-color: #80d0c7;
font-family: Montserrat, sans-serif;
}
body * {
box-sizing: border-box;
}
计算器居中
.container {
min-height: 100vh;
width: 100%;
padding: 5px;
display: flex;
align-items: center;
justify-content: center;
}
此乃经典Flexbox居中之法:
-
display: flex使能flex布局 -
align-items: center竖直居中 -
justify-content: center横向居中 -
min-height: 100vh使其充满全屏高度
如此,计算器恒居中矣
美化计算器之体
.calculator {
width: 100%;
max-width: 360px;
min-width: 300px;
margin: 10px auto;
padding: 36px;
background: #515151;
border-radius: 18px;
box-shadow:
0 10px 30px rgba(0, 0, 0, 0.25),
inset -4px -4px 10px rgba(0, 0, 0, 0.25);
}
末行使计算器有深邃之貌
显示之域
.display {
position: relative;
display: flex;
flex-direction: column;
padding: 12px 20px;
margin-bottom: 34px;
background: #c0d3c0;
border-radius: 16px;
border: 1px solid rgba(0,0,0,0.6);
box-shadow: inset 0 0 4px 2px rgba(0,0,0,0.25);
overflow: hidden;
}
说明
-
background拟似液晶屏 -
inset shadow赋予屏幕深度
显示文本对齐
.track,
.result {
display: flex;
justify-content: flex-end;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
说明
此确保计算器式对齐:
-
justify-content: flex-end→ 数右对齐 -
white-space: nowrap→ 阻止换行 -
text-overflow: ellipsis→ 过长则加“…”
→ 计算历史
.track {
position: absolute;
top: 8px;
left: 20px;
right: 20px;
font-size: 12px;
font-weight: 600;
opacity: 0.6;
}
-
position: absolute→ 内浮于显示 -
opacity: 0.6→ 使其较结果为轻
→ 结果之饰
.result {
margin-top: 16px;
font-size: clamp(2rem, 8vw, 3rem);
font-weight: 700;
}
说明
-
clamp()使字体响应式: -
font-weight: 700使结果视觉主导
按钮网格布局(CSS网格)
.buttons-container ol {
list-style-type: none;
padding: 0;
margin: 0;
display: grid;
grid-template-columns: repeat(4, 1fr);
gap: 10px;
}
运作原理:
-
display: grid启用网格系统 -
repeat(4, 1fr)创四等列 -
gap制钮间距
钮式之饰
.buttons-container li {
display: flex;
align-items: center;
justify-content: center;
aspect-ratio: 1;
font-size: 36px;
font-weight: 600;
background: #e7e7e7;
color: #242424;
border-radius: 10px;
border: 1px solid rgba(0,0,0,0.7);
box-shadow: inset -3px -3px 3px rgba(0,0,0,0.15);
cursor: pointer;
user-select: none;
transition: transform 0.08s ease, filter 0.15s ease;
}
其法若何:
吾辈务使钮常为方,藉aspect-ratio: 1之力。以box-shadow: inset -3px -3px 3px rgba(0,0,0,0.15)作幽深之象。
点触之效
吾以模拟真按纽之术:
.buttons-container li:active {
transform: translateY(2px);
}
操作按纽(橙色)
吾以雅色橙者饰操作按纽:
.buttons-container .orange {
background: #d88d43;
color: #fff;
border: 1px solid rgba(0,0,0,0.5);
}
此乃Codepen所呈终局之果!😊












