当前位置主页 > 资料库 > 前端教程 > 使用CSS3制作响应式网格布局

使用CSS3制作响应式网格布局

11-04

查看演示 下载地址

这个网格布局效果中每行的图片数量会根据屏幕的宽度自动调整,并在鼠标滑过时带有一些文本动画效果。

HTML结构:

<ul class="cbp-ig-grid">
    <li>
        <a href="#">
            <span class="cbp-ig-icon cbp-ig-icon-shoe"></span>
            <h3 class="cbp-ig-title">Squid voluptate</h3>
            <span class="cbp-ig-category">Fashion</span>
        </a>
    </li>
    <li>
        <a href="#">
            <span class="cbp-ig-icon cbp-ig-icon-ribbon"></span>
            <h3 class="cbp-ig-title">Mixtape lo-fi</h3>
            <span class="cbp-ig-category">Design</span>
        </a>
    </li>
    <li>
        <a href="#">
            <span class="cbp-ig-icon cbp-ig-icon-milk"></span>
            <h3 class="cbp-ig-title">Cosby sweater</h3>
            <span class="cbp-ig-category">Lifestyle</span>
        </a>
    </li>
    <li>
        <a href="#">
            <span class="cbp-ig-icon cbp-ig-icon-whippy"></span>
            <h3 class="cbp-ig-title">Commodo</h3>
            <span class="cbp-ig-category">Food</span>
        </a>
    </li>
    <li>
        <a href="#">
            <span class="cbp-ig-icon cbp-ig-icon-spectacles"></span>
            <h3 class="cbp-ig-title">Bitters kitsch</h3>
            <span class="cbp-ig-category">Gadgets</span>
        </a>
    </li>
    <li>
        <a href="#">
            <span class="cbp-ig-icon cbp-ig-icon-doumbek"></span>
            <h3 class="cbp-ig-title">Austin proident</h3>
            <span class="cbp-ig-category">Music</span>
        </a>
    </li>
</ul>
                            

CSS样式:

有了上面的html结构,剩下的工作就是添加css样式了。

@font-face {
    font-family: 'anyoldicon';
    src:url('../fonts/anyoldicon/anyoldicon.eot');
    src:url('../fonts/anyoldicon/anyoldicon.eot?#iefix') format('embedded-opentype'),
        url('../fonts/anyoldicon/anyoldicon.woff') format('woff'),
        url('../fonts/anyoldicon/anyoldicon.ttf') format('truetype'),
        url('../fonts/anyoldicon/anyoldicon.svg#anyoldicon') format('svg');
    font-weight: normal;
    font-style: normal;
}

/* General grid styles */
.cbp-ig-grid {
    list-style: none;
    padding: 0 0 50px 0;
    margin: 0;
}

/* Clear floats */
.cbp-ig-grid:before, 
.cbp-ig-grid:after { 
    content: " "; 
    display: table; 
}

.cbp-ig-grid:after { 
    clear: both; 
}

/* grid item */
.cbp-ig-grid li {
    width: 33%;
    float: left;
    height: 420px;
    text-align: center;
    border-top: 1px solid #ddd;
}

/* we are using a combination of borders and box shadows to control the grid lines */
.cbp-ig-grid li:nth-child(-n+3){
    border-top: none;
}

.cbp-ig-grid li:nth-child(3n-1),
.cbp-ig-grid li:nth-child(3n-2) {
    box-shadow: 1px 0 0 #ddd;
}

/* anchor style */
.cbp-ig-grid li > a {
    display: block;
    height: 100%;
    color: #47a3da;
    -webkit-transition: background 0.2s;
    -moz-transition: background 0.2s;
    transition: background 0.2s;
}

/* the icon with pseudo class for icon font */
.cbp-ig-icon {
    padding: 30px 0 0 0;
    display: block;
    -webkit-transition: -webkit-transform 0.2s;
    transition: -moz-transform 0.2s;
    transition: transform 0.2s;
}

.cbp-ig-icon:before {
    font-family: 'anyoldicon';
    font-size: 14em;
    speak: none;
    font-style: normal;
    font-weight: normal;
    font-variant: normal;
    text-transform: none;
    line-height: 1;
    -webkit-font-smoothing: antialiased;
}

.cbp-ig-icon-shoe:before {
    content: "\e000";
}

.cbp-ig-icon-ribbon:before {
    content: "\e001";
}

.cbp-ig-icon-milk:before {
    content: "\e002";
}

.cbp-ig-icon-whippy:before {
    content: "\e003";
}

.cbp-ig-icon-spectacles:before {
    content: "\e004";
}

.cbp-ig-icon-doumbek:before {
    content: "\e007";
}

/* title element */
.cbp-ig-grid .cbp-ig-title {
    margin: 20px 0 10px 0;
    padding: 20px 0 0 0;
    font-size: 2em;
    position: relative;
    -webkit-transition: -webkit-transform 0.2s;
    -moz-transition: -moz-transform 0.2s;
    transition: transform 0.2s;
}

.cbp-ig-grid .cbp-ig-title:before {
    content: '';
    position: absolute;
    background: #47a3da;
    width: 160px;
    height: 6px;
    top: 0px;
    left: 50%;
    margin: -10px 0 0 -80px;
    -webkit-transition: margin-top 0.2s; /* top or translate does not seem to work in Firefox */
    -moz-transition: margin-top 0.2s;
    transition: margin-top 0.2s;
}

.cbp-ig-grid .cbp-ig-category {
    text-transform: uppercase;
    display: inline-block;
    font-size: 1em;
    letter-spacing: 1px;
    color: #fff;
    -webkit-transform: translateY(10px);
    -moz-transform: -moz-translateY(10px);
    -ms-transform: -ms-translateY(10px);
    transform: translateY(10px);
    opacity: 0;
    -webkit-transition: -webkit-transform 0.3s, opacity 0.2s;
    -moz-transition: -moz-transform 0.3s, opacity 0.2s;
    -webkit-transition: transform 0.3s, opacity 0.2s;
}

.cbp-ig-grid li:hover .cbp-ig-category,
.touch .cbp-ig-grid li .cbp-ig-category {
    opacity: 1;
    -webkit-transform: translateY(0px);
    -moz-transform: translateY(0px);
    -ms-transform: translateY(0px);
    transform: translateY(0px);
}

/* Hover styles */

.cbp-ig-grid li > a:hover {
    background: #47a3da;
}

.cbp-ig-grid li > a:hover .cbp-ig-icon {
    -webkit-transform: translateY(10px);
    -moz-transform: translateY(10px);
    -ms-transform: translateY(10px);
    transform: translateY(10px);
}

.cbp-ig-grid li > a:hover .cbp-ig-icon:before,
.cbp-ig-grid li > a:hover .cbp-ig-title {
    color: #fff;
}

.cbp-ig-grid li > a:hover .cbp-ig-title {
    -webkit-transform: translateY(-30px);
    -moz-transform: translateY(-30px);
    -ms-transform: translateY(-30px);
    transform: translateY(-30px);
}

.cbp-ig-grid li > a:hover .cbp-ig-title:before {
    background: #fff;
    margin-top: 80px;
}


@media screen and (max-width: 62.75em) {
    .cbp-ig-grid li {
        width: 50%;
    }

    /* reset the grid lines */
    .cbp-ig-grid li:nth-child(-n+3){
        border-top: 1px solid #ddd;
    }

    .cbp-ig-grid li:nth-child(3n-1),
    .cbp-ig-grid li:nth-child(3n-2) {
        box-shadow: none;
    }

    .cbp-ig-grid li:nth-child(-n+2){
        border-top: none;
    }

    .cbp-ig-grid li:nth-child(2n-1) {
        box-shadow: 1px 0 0 #ddd;
    }
}

@media screen and (max-width: 41.6em) { 
    .cbp-ig-grid li {
        width: 100%;
    }

    .cbp-ig-grid li:nth-child(-n+2){
        border-top: 1px solid #ddd;
    }

    .cbp-ig-grid li:nth-child(2n-1) {
        box-shadow: none
    }

    .cbp-ig-grid li:first-child {
        border-top: none;
    }
}

@media screen and (max-width: 25em) { 
    .cbp-ig-grid {
        font-size: 80%;
    }

    .cbp-ig-grid .cbp-ig-category {
        margin-top: 20px;
    }
}
                            

css样式代码不多,也不难看懂,这样一个简单的网格布局就做好了。

本教程就到这里,希望对你有所帮助。

查看演示 下载地址

Previous:
上一篇:用html5和css3制作神奇的Tooltip样式
Next:
下一篇:使用jQuery制作3d画廊房间
返回顶部