到目前为止,我有这个:
HTML:
<button>
<span class="outter">
<span class="inner">Line A</span>
<span class="inner">Line b</span>
</span>
</button>
<button>
<span class="outter">
<span class="inner">Line X</span>
</span>
</button>
CSS:
* {
box-sizing: border-box;
}
button {
width: 100px;
height: 40px;
background-color: #CCFFCC;
border: none;
overflow: hidden;
border-radius: 5px;
}
button .outter {
display: inline-block;
width: inherit;
}
button:active .outter {
background-color: rgba(0, 0, 0, 0.15);
box-shadow: inset 0 2px 4px 0 rgba(0, 0, 0, 0.35);
}
button .inner {
display: inline-block;
width: inherit;
}
演示: http://jsfiddle.net/Lb3htfmx/2/
但是你可以在演示中看到这个问题。以下是我希望此按钮的行为方式:
如何解决这些问题?
答案 0 :(得分:3)
1)要对齐按钮,请使用按钮选择器上的vertical-align: top;
。
2)要使文字居中,请将.outer
元素的宽度设置为width:100%;
。
3)要使阴影背景覆盖整个按钮,请将选择器从button:active .outter {...}
更改为button:active {...}
。
这是一个小提琴:http://jsfiddle.net/cmd3nbz0/
答案 1 :(得分:1)
要使这些按钮顶部对齐,您应该设置vertical-align:top
,您还应该删除默认的:focus
大纲,并查看其他部分的以下演示。
button {
width: 100px;
height: 40px;
background: #cfc;
border: none;
border-radius: 5px;
display: inline-block;
vertical-align: top;
position: relative;
}
button span {
display: block;
}
button:after {
content: "";
display: block;
width: 100%;
height: 100%;
position: absolute;
left: 0;
top: 0;
}
button:focus {
outline: 0;
}
button:active {
box-shadow: inset 0 2px 4px 0 rgba(0, 0, 0, 0.35);
}
button:active:after {
background: rgba(0, 0, 0, 0.15);
}
<button>
<span>Line A</span>
<span>Line b</span>
</button>
<button>
<span>Line X</span>
</button>
答案 2 :(得分:1)
解决了问题:Jsfiddle here
您的问题是,您的按钮显示为inline-block
,当它们应display:inline
进行垂直对齐时。
垂直对齐的文档here:
你还应该float
按钮内的对象,以便让他们进入&#34;堆叠&#34;
浮动here的文档:
并将button:active .outter
.outter更改为button:active
button:active {
-moz-box-shadow: inset 0 0 10px #000000;
-webkit-box-shadow: inset 0 0 10px #000000;
box-shadow: inset 0px 1px 5000px rgba(0,0,0,0.8);
}
排列对齐问题,您不应该使用width:inherit;
而是使用width:100%;
答案 3 :(得分:0)
我不确定我明白你想要什么。像这样的东西?
JS Fiddle
它有一个父容器,也许它可以在没有它的情况下完成,但我认为这是最好的&#34;正确的&#34;方式。
.container {
position: absolute;
display: flex;
align-items: center;
justify-content: center;
}
.container > button {
border-radius: 5px;
border: 2px solid transparent;
margin: 5px 5px 5px 5px;
background-color: ocre;
color: brown;
transition: all 0.3s;
}
.container > button > span {
display: block;
}
.container > button:hover {
border: 2px solid gray;
color: red;
}
.container > button:focus {
border-color: black;
color: red;
background-color: gray;
box-shadow: 5px 5px 10px #888888;
outline: none;
}
&#13;
<div class="container">
<button>
<span class="inner">Line A</span>
<span class="inner">Line b</span>
</button>
<button>
<span class="inner">Line X</span>
</button>
</div>
&#13;
答案 4 :(得分:0)
那些在 2021 年尝试此操作的人可能更喜欢在按钮上粘贴“display: flex”,将子 span 元素放在按钮元素内(我刚刚意识到您可以这样做),然后弄乱 Flexbox 设置直到适合恰到好处。