以响应式方式布置图标

Posted

技术标签:

【中文标题】以响应式方式布置图标【英文标题】:Laying out icons in responsive way 【发布时间】:2015-02-08 13:08:09 【问题描述】:

我想连续布置 40x40px 的图像图标,当浏览器缩小时应该会自动缩小尺寸。

使用此技术后:Make an image responsive - simplest way 每个图像都跨越了整个窗口宽度(大约 1144 像素)。

我应该如何纠正这个问题?

我使用了以下代码

 <div id="customtoolbar">
    <div class="topbar">
      <div class="icons">

        <a href="http://wsris:9191/" class="icon icon-papercut"><img src="sites/default/files/newicons/papercut.png" border="0" style="width:100%"></a>
        <a href="https://www.google.com/calendar" class="icon icon-cyberoam"><img src="sites/default/files/newicons/calendar.png" border="0" style="width:100%"></a>
        <a href="https://docs.google.com/" class="icon icon-drive"><img src="sites/default/files/newicons/drive.png" border="0" style="width:100%"></a>
        <a href="https://mail.google.com/" class="icon icon-gmail"><img src="sites/default/files/newicons/gmail.png" border="0" style="width:100%"></a>
        <a href="http://mycompanyschool.in/" class="icon icon-calendar"><img src="sites/default/files/newicons/calendar.png" border="0" style="width:100%"></a>
        <a href="https://clas-s-room.google.com/u/0/welcome?emr=0" class="icon icon-clas-s-room"><img src="sites/default/files/newicons/clas-s-room.png" border="0" style="width:100%"></a>

    </div>

【问题讨论】:

使用max-width:40px;? 您还在寻找答案还是对您提供的解决方案感到满意? @apaul34208 是的,我正在寻找应该是理想的正确答案。我提到了我从脑海中尝试过的东西。 您的解决方案有什么特别不理想的地方需要改进吗? @apaul34208 只是我想知道以自适应方式进行布局的最佳方式。我不擅长 CSS。像你这样的专家应该告诉什么是理想的。 【参考方案1】:

哦,我是通过使用“width:5%”或 6% 作为 img 标签来实现的,无论图标看起来如何。现在他们响应了:

img
width:5%;
height:auto;
max-width:40px;

【讨论】:

【参考方案2】:

您可以进行媒体查询并为您想要的每个分辨率设置大小:

@media (max-width: 500px) 
    img
        width:32px;
        height:32px;
    



@media (min-width: 501px) 
    img
        width:40px;
        height:40px;
    


这是一个关于 Mozilla 媒体查询的链接:https://developer.mozilla.org/en-US/docs/Web/Guide/CSS/Media_queries

这是一个 jsfiddle:http://jsfiddle.net/alexfqc/0uft975k/

你可以给背景图片:

html 代码:

<div id="penguin"></div>

CSS 代码:

#penguin
    background: url('http://images.all-free-download.com/images/graphiclarge/penguin_clip_art_7050.jpg') no-repeat;
    width:408px;
    height:425px;
    background-size: 75%;

jsfiddle 代码:http://jsfiddle.net/alexfqc/ozh0qzpc/

【讨论】:

【参考方案3】:

试试下面的 CSS:

img 
    width:100%;
    max-width:40px;
    height:auto;

如果你使用 css width:100%,它会将 img 宽度设置为可用的浏览器宽度。使用 max-width 。

【讨论】:

这将使图像在所有屏幕上保持 40 像素宽,除非屏幕宽度小于 40 像素。【参考方案4】:

过分夸张的解决方案

    我建议您使用 CSS 精灵,即不要创建六个图标,只需创建一个包含所需图标的图像。 CSS sprite 可以用作背景图片,并使用background-size: cover 进行响应。 使用通过填充的固定纵横比技术,以便您的图标根据屏幕大小按比例扩大/缩小。 在链接中添加一些文本标签,以便搜索引擎可以阅读它们。

.icon 
  display: inline-block;
  width: 16%;                    /* 100% / 6, subtract some room for whitespace */
  max-width: 40px;               /* maximum 40px wide */
  text-indent: -999px;           /* this hides the text labels */
  background-size: cover;        /* crop-fill the icon with background image */
  background-image: url(http://i.stack.imgur.com/sPkRn.png);
  box-shadow: 0 0 1px #000000;

.icon:after 
  content: "";                   /* this is the fixed aspect ratio trick */
  display: inline-block;
  padding-top: 100%;
  width: 1px;
  vertical-align: bottom;        /* this elimiates bottom whitespace */

.icon.icon-papercut 
  background-position: 0 0;      /* align background's top-left */

.icon.icon-cyberoam 
  background-position: 0 20%;    /* 6 icons on sprite -> 0, 20%, 40%, ..., 100% */

.icon.icon-drive 
  background-position: 0 40%;

.icon.icon-gmail 
  background-position: 0 60%;

.icon.icon-calendar 
  background-position: 0 80%;

.icon.icon-clas-s-room 
  background-position: 0 100%;
<div class="icons">
  <a href="#" class="icon icon-papercut">Papercut</a>
  <a href="#" class="icon icon-cyberoam">Cyberoam</a>
  <a href="#" class="icon icon-drive">Drive</a>
  <a href="#" class="icon icon-gmail">GMail</a>
  <a href="#" class="icon icon-calendar">Calendar</a>
  <a href="#" class="icon icon-clas-s-room">Clas-s-room</a>
</div>

这是示例中使用的图像:

【讨论】:

以上是关于以响应式方式布置图标的主要内容,如果未能解决你的问题,请参考以下文章

资源分享300个响应式设计线性图标

响应式网站手机端不显示favicon.ico图标,如何解决?

响应式设计:不要过度依赖屏幕尺寸

响应式编程

浅谈前端响应式设计

浅谈前端响应式设计