如何为放大的放大背景精灵设置1px边框和1px轮廓?

问题描述 投票:0回答:3

我想给我的 css 放大图标 sprite 一点空白,后面跟着一个 1px 的细轮廓,如下所示:

现在我已经尝试了这些演示,使用相同的优雅 html 和不同的 CSS(在站在社区中其他才华横溢的巨人的肩膀上获得了一些帮助):

JS 小提琴演示1
JS 小提琴演示2

{
border: 1px solid white;
outline: 1px solid red;
}

但是,正如您所看到的,在这两种方法中,边框(此处充当间隔符)和轮廓都比我想要的 1px 粗得多。这里的挑战是我使用一个带有协调的巨大背景作为精灵,所以会有

background-position: 0 -3048;
例如。

如果我尝试在图标的父 div 中设置边框/轮廓,那么整个布局就会崩溃!

如果我尝试

background-size: contain
,那么整个精灵背景就会被压缩成一个很小的图标大小。

如何实现如上图所示的 1px 细轮廓?

css layout background-image sprite
3个回答
2
投票

background-size
将是最好的选择,
flex
在这里也很有用

您只需更新

background-position

.line {
  display: flex;
  margin:1.2em;
  align-items:center;
}
span {
  flex: 1;
  border-bottom: solid red 1px;
  margin:0 0 auto;
  height:25px;/* =============== half ico's height */
}
.line [class] {
  flex: none;
  height: 50px;
  width: 50px;
  border: solid red 1px;
  box-shadow: inset 0 0 0 2px gray;
  background: url(https://s3-us-west-2.amazonaws.com/appdirect-assets/Blog%20Images/Content/2011/SVG-icons.png);
  background-size: 1100% 800%;/* 11x8*/
  background-position: 0px 1%;
}
span:last-of-type {
  text-align: right;
}
.line .ico2 {
  background-position:9.5% 15%;
}
.line .ico3 {
  background-position:20% 14.85%;
}
.bigger [class]{
  height:80px;
  width:80px;
  margin-left:1em;
}
<div class="line">
  <span>text on left</span>
  <span class="ico1"></span>
  <span>text on right</span>
</div>
<div class="line">
  <span>text on left</span>
  <span class="ico2"></span>
  <span>text on right</span>
</div>
<div class="line">
  <span>text on left</span>
  <span class="ico3"></span>
  <span>text on right</span></div>
<div class="line bigger">
background-size rescales automaticly 
  <span class="ico1"></span>
  <span class="ico2"></span>
  <span class="ico3"></span>
</div>


2
投票

这是因为您在应用边框的同一元素上有一个

transform: scale

边框在变换之前应用,因此边框也会缩放。

解决方案是将边框放在图标的父元素上,然后将缩放应用于子元素。


-1
投票

只要你使用缩放元素,你就永远不会得到 1px 的线:

-ms-transform: scale(3); 
-o-transform: scale(3); 
-webkit-transform: scale(3); 
transform: scale(3);
© www.soinside.com 2019 - 2024. All rights reserved.