我想在列表项的右侧添加背景图像,并且想要从右侧添加一些填充,但我无法做到这一点。请看下面的例子:
HTML:
<ul>
<li>Hello</li>
<li>Hello world</li>
</ul>
CSS:
ul{
width:100px;
}
ul li{
border:1px solid orange;
background: url("arrow1.gif") no-repeat center right;
}
ul li:hover{
background:yellow url("arrow1.gif") no-repeat center right;
}
我知道我们可以按像素设置图像位置,但由于每个li都有不同的宽度,我不能这样做。
这是JSFiddle链接: http://jsfiddle.net/QeGAd/1/
答案 0 :(得分:117)
你可以更准确地说:
background-origin: content-box;
这将使图像尊重盒子的填充。 http://www.w3schools.com/cssref/css3_pr_background-origin.asp
答案 1 :(得分:37)
您可以使用百分比值:
background: yellow url("arrow1.gif") no-repeat 95% 50%;
不像素完美,但是......
答案 2 :(得分:4)
您可以通过两种方法获得结果: -
第一种方法 定义位置值: -
<强> HTML 强>
<ul>
<li>Hello</li>
<li>Hello world</li>
</ul>
<强> CSS 强>
ul{
width:100px;
}
ul li{
border:1px solid orange;
background: url("http://www.adaweb.net/Portals/0/Images/arrow1.gif") no-repeat 90% 5px;
}
ul li:hover{
background: yellow url("http://www.adaweb.net/Portals/0/Images/arrow1.gif") no-repeat 90% 5px;
}
首次演示: - http://jsfiddle.net/QeGAd/18/
CSS 之前的第二种方法 :之前:之后
选择器<强> HTML 强>
<ul>
<li>Hello</li>
<li>Hello world</li>
<强> CSS 强>
ul{
width:100px;
}
ul li{
border:1px solid orange;
}
ul li:after {
content: " ";
padding-right: 16px;
background: url("http://www.adaweb.net/Portals/0/Images/arrow1.gif") no-repeat center right;
}
ul li:hover {
background:yellow;
}
ul li:hover:after {
content: " ";
padding-right: 16px;
background: url("http://www.adaweb.net/Portals/0/Images/arrow1.gif") no-repeat center right;
}
第二次演示: - http://jsfiddle.net/QeGAd/17/
答案 3 :(得分:3)
使用background-position: calc(100% - 20px) center
,对于像素完美calc()
是最佳解决方案。
ul {
width: 100px;
}
ul li {
border: 1px solid orange;
background: url("http://placehold.it/30x15") no-repeat calc(100% - 10px) center;
}
ul li:hover {
background-position: calc(100% - 20px) center;
}
<ul>
<li>Hello</li>
<li>Hello world</li>
</ul>
答案 4 :(得分:3)
background-clip: content-box;
背景将在内容框中绘制。
答案 5 :(得分:2)
实现这个像素的唯一选择就是在GIF内部创建一些透明填充。这样你实际上可以将它对齐到LI的右边,并且仍然有你正在寻找的背景填充。
答案 6 :(得分:0)
将direction CSS属性设置为rtl可以与您合作。我猜它在IE6上不受支持。
例如
<ul style="direction:rtl;">
<li> item </li>
<li> item </li>
</ul>
答案 7 :(得分:0)
您可以将填充添加到游览块元素中,并添加background-origin
样式,如下所示:
.block {
position: relative;
display: inline-block;
padding: 10px 12px;
border:1px solid #e5e5e5;
background-size: contain;
background-position: center;
background-repeat: no-repeat;
background-origin: content-box;
background-image: url(_your_image_);
height: 14rem;
width: 10rem;
}
您可以检查几个https://www.w3schools.com/cssref/css3_pr_background-origin.asp
答案 8 :(得分:0)
添加 box-sizing: content-box
似乎也有效。请注意,您可能需要调整 height
、width
和 background-size
以考虑使用此方法进行填充。