首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何让图片响应纯css?

如何让图片响应纯css?
EN

Stack Overflow用户
提问于 2015-02-09 11:51:15
回答 2查看 194关注 0票数 1

我有一个Wordpress菜单,我已经制作了标签的背景图像。我试图让图像在.wrapper缩小时缩小,并将它们保持在水平行中,并避免使用引导程序时使用javascript和/或媒体查询或navwalker类。

这是全尺寸菜单的样子:

下面是我的.wrapper、9个菜单项中的一个菜单项以及nav类和徽标结构的代码。请注意,我正在尝试将相同的概念应用到徽标上。

我正在使用html5blank和Wordpress菜单。

代码语言:javascript
复制
<div class="nav" role="navigation">
    <?php html5blank_nav(); ?>
</div>

这是它呈现的9个<li>之一的html (我在css中设置了样式)。

代码语言:javascript
复制
<li id="menu-item-1688" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-1688"><a href="http://myUrl.com/blog/">Blog</a></li>


.wrapper {
    max-width:1280px;
    width:95%;
    margin:0 auto;
    position:relative;
}


  .logo {
        float:left;
        width:145px;
        height:157px;
    }

    .nav {
        float:left;
        padding-top:11px;
    }
    .nav ul {
        padding:0;
        margin:0;
    }
    .nav ul li {
        float:left;
        list-style-type:none;
        padding:0;
        margin:0;
    }

    li#menu-item-1688 a {
        display:block;
        background:url('img/ksl_news.png');
        background-repeat:no-repeat;
        width:110px;
        height:119px;
        color:transparent;
        margin-top:27px;
    }
EN

回答 2

Stack Overflow用户

发布于 2015-02-09 13:05:17

您可以使用padding属性的一个特性来完成此操作:当指定为百分比时,padding /padding的值是根据元素的宽度计算的(这也适用于边距)。

最小示例:

代码语言:javascript
复制
a {
    background: url('http://i.stack.imgur.com/4kaLj.png');
    background-size: contain;
    display: block;
    padding-top: 12.6324%;
}

12.6324%来自图像的纵横比:height/width*100 = 310/2454*100 = 12.6324%

display: block;会使元素的宽度达到容器的100%。总而言之,这解决了你的问题,只要你知道你的图像的纵横比,这样你就可以计算这些百分比,这是可行的。

Jsfiddle example.

票数 1
EN

Stack Overflow用户

发布于 2015-02-10 07:55:34

所以这里有一个奇怪的方法-使用display: table来避免需要知道你将拥有的菜单项的数量。它并不是非常完美-因为图像有时会有一个像素大小的偏差,但如果这对你有效,那么很好:)

HTML:

代码语言:javascript
复制
<div class="container">
    <nav class="nav">
        <ul>
            <li class="logo"><a href="/"><img src="//placehold.it/145x157" /></a></li>
            <li><a href="/"><img src="//placehold.it/110x119" /></a></li>
            <li><a href="/"><img src="//placehold.it/110x119" /></a></li>
            <li><a href="/"><img src="//placehold.it/110x119" /></a></li>
            <li><a href="/"><img src="//placehold.it/110x119" /></a></li>
            <li><a href="/"><img src="//placehold.it/110x119" /></a></li>
            <li><a href="/"><img src="//placehold.it/110x119" /></a></li>
            <li><a href="/"><img src="//placehold.it/110x119" /></a></li>
            <li><a href="/"><img src="//placehold.it/110x119" /></a></li>
            <li><a href="/"><img src="//placehold.it/110x119" /></a></li>
        </ul>

    </nav>
</div>

CSS:

代码语言:javascript
复制
.nav {
    display: table;
    width: 100%;
}

.nav ul {
    display: table-row;
}

.nav li {
    list-style: none;
    padding: 0px;
    margin: 0px;
    display: table-cell;
    vertical-align: bottom;
}

.nav img {
    max-width: 100%;
    border: solid 1px #000;
}

JSFiddle Example.

但是,如果单元格大小的细微差别对您来说是一个问题(这是相当明显的),但是您很高兴在css中对菜单中的菜单项数量有一个硬编码的要求,请尝试将相同的标记与以下CSS一起使用:

代码语言:javascript
复制
.nav ul {
    margin: 0px;
    padding: 0px;
    font-size: 0px;
}

.nav li {
    list-style: none;
    padding: 0px;
    margin: 0px;
    display: inline-block;
    vertical-align: bottom;
    max-width: 9%;
}

.nav li.logo {
    max-width: 11%;
}

.nav img {
    max-width: 100%;
    border: solid 1px #000;
}

Jsfiddle example.

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28402539

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档