我在一个图像中有三(3)个社交图标,在另一个图像中有相同的双尺寸图标用于视网膜显示。我以为我的CSS会是这样的:
Dim AppExcel as New Excel.Application
Dim workbook As Excel.Workbook = AppExcel.Workbooks.Add()
'Range
Dim cellrange1 as Excel.Range = AppExcel.ActiveWorkbook.Sheets("Feuil1").Range("A1")
但是,.social-media li a {
width: 44px;
height: 48px;
background: url('social-media.png') no-repeat;
}
@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) {
.social-media li a {
background: url('social-media@2x.png') no-repeat;
background-size: 44px 48px; /* same with width & height of normal (non-retina) image for fitting in equal space */
}
}
似乎在这里产生了问题。但是,如果没有这个属性,我就无法在background-size
(普通图像块)维度块中适应视网膜显示的图像。什么是正确的方法?
在下面的小提琴中,你会看到,我已经放了三个街区。 1 st 一个用于正常图像,2 nd 一个用于显示具有原始双倍大小的视网膜图像演示(它基本上用于检查正确性我的44 x 48
),最后一个用于在正常图像的大小块内显示视网膜图像演示(因为我想首先在普通设备而不是视网膜设备上检查一下,看看如何他们将在视网膜设备中表现)。
简而言之,我需要正确的结果。
background-position

#normal .social-media {
list-style: none;
display: inline-block;
padding-top: 25px;
}
#normal .social-media li {
float: left;
margin-right: 20px;
}
#normal .social-media li:last-child {
margin-right: 0;
}
#normal .social-media li a {
width: 44px;
height: 48px;
background: url('http://i.imgur.com/xr8VaHh.png') no-repeat;
display: block;
}
#normal .social-media li a.facebook-icon {
background-position: 0 -60px;
}
#normal .social-media li a.facebook-icon:hover {
background-position: 0 0;
}
#normal .social-media li a.twitter-icon {
background-position: -64px -60px;
}
#normal .social-media li a.twitter-icon:hover {
background-position: -64px 0;
}
#normal .social-media li a.linked-in-icon {
background-position: -128px -60px;
}
#normal .social-media li a.linked-in-icon:hover {
background-position: -128px 0;
}
/***************** For Retina background image with original size **************/
#forRetinaOriginalSize .social-media {
list-style: none;
display: inline-block;
padding-top: 25px;
}
#forRetinaOriginalSize .social-media li a {
width: 88px;
height: 96px;
background: url('http://i.imgur.com/Cif180D.png') no-repeat;
display: block;
}
#forRetinaOriginalSize .social-media li a.facebook-icon {
background-position: -30px -141px;
}
#forRetinaOriginalSize .social-media li a.twitter-icon {
background-position: -157px -141px;
}
#forRetinaOriginalSize .social-media li a.linked-in-icon {
background-position: -285px -141px;
}
#forRetinaOriginalSize .social-media li a.facebook-icon:hover {
background-position: -30px -21px;
}
#forRetinaOriginalSize .social-media li a.twitter-icon:hover {
background-position: -157px -21px;
}
#forRetinaOriginalSize .social-media li a.linked-in-icon:hover {
background-position: -285px -21px;
}
/***************** For Retina background image with normal size **************/
#forRetinaNormalSize .social-media {
list-style: none;
display: inline-block;
padding-top: 25px;
}
#forRetinaNormalSize .social-media li a {
width: 44px;
height: 48px;
display: block;
background: url('http://i.imgur.com/Cif180D.png') no-repeat;
-webkit-background-size: 44px 48px;
background-size: 44px 48px;
}
#forRetinaNormalSize .social-media li a.facebook-icon {
background-position: -30px -141px;
}
#forRetinaNormalSize .social-media li a.twitter-icon {
background-position: -157px -141px;
}
#forRetinaNormalSize .social-media li a.linked-in-icon {
background-position: -285px -141px;
}
#forRetinaNormalSize .social-media li a.facebook-icon:hover {
background-position: -30px -21px;
}
#forRetinaNormalSize .social-media li a.twitter-icon:hover {
background-position: -157px -21px;
}
#forRetinaNormalSize .social-media li a.linked-in-icon:hover {
background-position: -285px -21px;
}
/* HiDPI support for Normal */
@media (-o-min-device-pixel-ratio: 5/4),
(-webkit-min-device-pixel-ratio: 1.25),
(min-resolution: 120dpi),
(min-resolution: 1.25dppx) {
#normal .social-media li a {
background: image-url('http://i.imgur.com/Cif180D.png') no-repeat;
-webkit-background-size: 44px 48px;
background-size: 44px 48px;
}
#normal .social-media li a.facebook-icon {
background-position: -30px -141px;
}
#normal .social-media li a.twitter-icon {
background-position: -157px -141px;
}
#normal .social-media li a.linked-in-icon {
background-position: -285px -141px;
}
#normal .social-media li a.facebook-icon:hover {
background-position: -30px -21px;
}
#normal .social-media li a.twitter-icon:hover {
background-position: -157px -21px;
}
#normal .social-media li a.linked-in-icon:hover {
background-position: -285px -21px;
}
}

答案 0 :(得分:1)
您需要使用高密度设备(@ 2x)的图像将所有尺寸除以2,为此您需要均匀尺寸的图像(因为所有尺寸将被2除以)才能看起来很好。
我修改了facebook图标,例如:https://jsfiddle.net/wqkewd03/3/
#forRetinaNormalSize .social-media li a {
width: 44px;
height: 48px;
display: block;
background: url('http://i.imgur.com/Cif180D.png') no-repeat;
-webkit-background-size: 268px 129px;
background-size: 268px 129px;
#forRetinaNormalSize .social-media li a.facebook-icon {
background-position: -15px -70px;
}
#forRetinaNormalSize .social-media li a.facebook-icon:hover {
background-position: -15px -10px;
}
我通常使用“@ 2x”作为默认设置(对于那种图像:图标等),使用这种方法,图像不会太大,今天的浏览器缩放也不错,为什么不使用1版本和您需要专门针对它的一半代码。当高密度桌面屏幕到来时,它似乎是面向未来的。
答案 1 :(得分:0)
图像图标的时代已经结束。您应该切换到使用字形图标库。它们更干净,因为它们是字体/矢量,几乎可以扩展到任何尺寸。
通过将此CSS Hexagon tutorial与Font Awesome相结合,我创建了一个不依赖于精灵或图像锯齿的替代方案。
如果您使用SASS或SCSS,下面的CSS可以进一步减少。
.social-media:before, .social-media:after {
position: absolute;
border-left: 52px solid transparent;
border-right: 52px solid transparent;
content: " ";
width: 0;
height: 0;
}
.social-media:before {
top: -30px;
border-bottom: 30px solid #6C6;
}
.social-media {
display: inline-block;
margin-top: 30px;
width: 104px;
height: 60px;
background-color: #6C6;
position: relative;
}
.social-media:after {
bottom: -30px;
border-top: 30px solid #6C6;
}
.social-media span {
text-align: center;
width: 100%;
font-size: 3em;
line-height: 1.25em;
}
.social-media:before { border-bottom: 30px solid #000000; }
.social-media { background-color: #000000; color: #FFFFFF; }
.social-media:after { border-top: 30px solid #000000; }
.social-media.facebook:hover:before { border-bottom: 30px solid #0268A0; }
.social-media.facebook:hover { background-color: #0268A0; color: #FFFFFF; }
.social-media.facebook:hover:after { border-top: 30px solid #0268A0; }
.social-media.twitter:hover:before { border-bottom: 30px solid #03BEE4; }
.social-media.twitter:hover { background-color: #03BEE4; color: #FFFFFF; }
.social-media.twitter:hover:after { border-top: 30px solid #03BEE4; }
.social-media.linkedin:hover:before { border-bottom: 30px solid #0098DC; }
.social-media.linkedin:hover { background-color: #0098DC; color: #FFFFFF; }
.social-media.linkedin:hover:after { border-top: 30px solid #0098DC; }

<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.1/css/font-awesome.min.css" rel="stylesheet" />
<div class="social-media facebook">
<span class="fa fa-facebook"></span>
</div>
<div class="social-media twitter">
<span class="fa fa-twitter"></span>
</div>
<div class="social-media linkedin">
<span class="fa fa-linkedin"></span>
</div>
&#13;
@mixin hex($bgcolor:#000000, $fgcolor:#FFFFFF) {
&:before { border-bottom: 30px solid $bgcolor; };
background-color: $bgcolor; color: $fgcolor;
&:after { border-top: 30px solid $bgcolor; };
}
.social-media { @include hex(); }
.social-media.facebook:hover { @include hex(#0268A0); }
.social-media.twitter:hover { @include hex(#03BEE4); }
.social-media.linkedin:hover { @include hex(#0098DC); }