我正在尝试使用纯CSS而不使用背景图像创建下面显示的“向上和向下”控制按钮。
但是当我在“li.className:after
或li.className:before
”中添加了箭头的CSS时,主框的位置就会移动。
以下是我得到的问题的小提琴> http://jsfiddle.net/8usFk/
以下是相同的代码:
HTML
<div class="positionCameras">
<ul>
<li title="Move Up" class="cameraLeft" id="cameraUp"></li>
<li title="Camera" class="cameraIcon"></li>
<li title="Move Down" class="cameraRight" id="cameraDown"></li>
</ul>
</div>
CSS
.positionCameras ul, .positionCameras li {
margin: 0;
padding: 0;
list-style: none;
display: inline-block;
}
.positionCameras li.cameraLeft, .positionCameras li.cameraIcon, .positionCameras li.cameraRight {
width: 25px;
height: 25px;
cursor: pointer;
background: #cccccc;
margin: 5px;
border-radius: 5px;
border: 1px solid #aaaaaa;
box-shadow: 1px 2px 15px #cccccc;
}
.positionCameras li.cameraLeft:before {
content:" ";
width: 0;
height: 0;
border-style: solid;
border-width: 0 5px 10px 5px;
border-color: transparent transparent #007bff transparent;
}
.positionCameras li.cameraIcon {
cursor: default;
}
.positionCameras li.cameraRight:before {
width: 0;
height: 0;
border-style: solid;
border-width: 8.7px 5px 0 5px;
border-color: #007bff transparent transparent transparent;
}
如果您需要任何其他信息,请与我们联系。
请建议。
答案 0 :(得分:5)
如果您将伪设置为display:inline-block
(或任何其他值,但内联。),您可以将其设置为大小。
然后,
text-align:center
放在父母身上。vertical-align
它:line-height:20px
(25px -5px,它是伪元素高度的一半)并将vertical-align:middle
设置为伪元素:<强> DEMO 强>
.positionCameras ul, .positionCameras li {
margin: 0;
padding: 0;
list-style: none;
display: inline-block;
vertical-align:top;/* UPDATE*/
}
.positionCameras li.cameraLeft, .positionCameras li.cameraIcon, .positionCameras li.cameraRight {
width: 25px;
height: 25px;
cursor: pointer;
background: #cccccc;
margin: 5px;
border-radius: 5px;
border: 1px solid #aaaaaa;
box-shadow: 1px 2px 15px #cccccc;
text-align:center;/* UPDATE*/
line-height:20px;/* UPDATE*/
}
.positionCameras li.cameraLeft:before {
content:"";
display:inline-block;/* UPDATE*/
width: 0;
height: 0;
vertical-align:middle;/* UPDATE*/
border-style: solid;
border-width: 0 5px 10px 5px;
border-color: transparent transparent #007bff transparent;
}
.positionCameras li.cameraIcon {
cursor: default;
}
.positionCameras li.cameraRight:before {
width: 0;
height: 0;
border-style: solid;
border-width: 8.7px 5px 0 5px;
border-color: #007bff transparent transparent transparent;
}
答案 1 :(得分:3)
此选项始终使箭头居中,与大小无关,并且不需要固定的值边距
<强> CSS 强>
.positionCameras ul, .positionCameras li {
margin: 0;
padding: 0;
list-style: none;
display: inline-block;
vertical-align: top; /* added */
}
.positionCameras li.cameraLeft,
.positionCameras li.cameraIcon,
.positionCameras li.cameraRight {
position: relative; /* added */
width: 25px;
height: 25px;
cursor: pointer;
background: #cccccc;
margin: 5px;
border-radius: 5px;
border: 1px solid #aaaaaa;
box-shadow: 1px 2px 15px #cccccc;
}
.positionCameras li.cameraIcon {
cursor: default;
}
.positionCameras li.cameraLeft:before,
.positionCameras li.cameraRight:before{
content:"";
/* added for positioning magic */
position: absolute;
top:50%;
left:50%;
-webkit-transform: translate(-50%, -50%);
transform: translate(-50%, -50%);
/* end added */
width: 0;
height: 0;
border-style: solid;
}
.positionCameras li.cameraLeft:before {
border-width: 0 5px 10px 5px;
border-color: transparent transparent #007bff transparent;
}
.positionCameras li.cameraRight:before {
border-width: 10px 5px 0 5px;
border-color: #007bff transparent transparent transparent;
}
答案 2 :(得分:0)
添加
vertical-align:top;
应用于div的CSS。
即。你的CSS类应该是这样的:
.positionCameras li.cameraLeft, .positionCameras li.cameraIcon, .positionCameras li.cameraRight {
width: 25px;
height: 25px;
cursor: pointer;
background: #cccccc;
margin: 5px;
border-radius: 5px;
border: 1px solid #aaaaaa;
box-shadow: 1px 2px 15px #cccccc;
vertical-align:top;
}
这样就可以了。
您可以在此处看到:http://jsfiddle.net/rhX87/
<强>更新强>
为图像添加以下CSS以使其正确居中:
position:relative;
bottom:11px;
left:7px;
在.positionCameras li.cameraLeft:before
班。
这应该使图像居中。
请在此处查看:http://jsfiddle.net/rhX87/1/
希望这有帮助!!!
答案 3 :(得分:0)
<强> HTML 强>
<div class="positionCameras">
<ul>
<li title="Move Up" class="cameraLeft" id="cameraUp"></li>
<li title="Camera" class="cameraIcon"></li>
<li title="Move Down" class="cameraRight" id="cameraDown"></li>
</ul>
</div>
<强> CSS 强>
.positionCameras ul, .positionCameras li {
margin: 0;
padding: 0;
list-style: none;
display: inline-block;
}
.positionCameras li.cameraLeft,
.positionCameras li.cameraIcon,
.positionCameras li.cameraRight {
width: 25px;
height: 25px;
cursor: pointer;
background: #cccccc;
margin: 5px;
border-radius: 5px;
border: 1px solid #aaaaaa;
box-shadow: 1px 2px 15px #cccccc;
vertical-align:top;
}
.positionCameras li.cameraLeft:before,
.positionCameras li.cameraRight:before{
padding:5px;
color:#007bff;
font-size:16px;
line-height:25px;
}
.positionCameras li.cameraLeft:before{
content:"▼";
}
.positionCameras li.cameraRight:before{
content:"▲";
}
.positionCameras li.cameraIcon:before{
content:"•";
padding:5px;
color:#111;
font-size:48px;
line-height:25px;
}
答案 4 :(得分:0)
您也可以使用html character codes
并按此Fiddle
答案 5 :(得分:0)
这是我严格的html版本。 您需要添加javascript函数&#34; incrementMyNumber()&#34;处理onclick事件。 关键是包含箭头的div的负边距。 您可能需要使用这些数字,但这在IE和Chrome中看起来很不错。
<table>
<td>
<input type="text" id="myNumber" style="width:50px" value="5" />
</td>
<td>
<table style="border-spacing:0px;margin-left:-2px;width:20px;">
<tr>
<td style="border:1px solid black;height:8px;background-color:#dcdcdc;cursor:pointer" onclick="incrementMyNumber(1)">
<div style="margin:-5px;font-size:8px;">▲</div>
</td>
</tr>
<tr>
<td style="border: 1px solid black; height: 8px; background-color: #dcdcdc;cursor:pointer" onclick="incrementMyNumber(-1)">
<div style="margin:-5px;font-size:8px;">▼</div>
</td>
</tr>
</table>
</td>