HTML+CSS:滑动手风琴

今天学习做一个简单的前端demo滑动手风琴,效果如下,在鼠标移入的时候图标变大且背景颜色改变,右侧出现介绍的文字,同时做出响应式的页面

手风琴.png
手风琴hover.png

首先是HTML部分

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <title></title>
        <link rel="stylesheet" type="text/css" href="css/style.css"/>
        <link href="https://cdn.bootcdn.net/ajax/libs/genericons/3.1/genericons.css" rel="stylesheet">
    </head>
    <body>
        <div class="container">
            <header>
                <h1>HTML+CSS:滑动手风琴</h1>
            </header>
            <ul class="contentall">
                <!-- 设置一个无序列表包含六个li标签存放六个板块 -->
                <!-- 第一个板块开始 -->
                <li class="menu">
                    <div class="social youtube">
                        <a href="">youtube</a>
                        <!-- 设置超链接后续插入图片可点入转跳 -->    
                    </div>
                    <div class="content">
                        <h1>YouTuBe</h1>
                        <p>hello,i want to recommend this application to you.hello,i want to recommend this application to you.</p>
                    </div>
                        <!-- 设置一个盒子存放标题和内容 -->    
                </li>
                <!-- 第二个板块开始 -->
                <li class="menu">
                    <div class="social Twitter">
                        <a href="">twitter</a>
                    </div>
                    <div class="content">
                        <h1>Twitter</h1>
                        <p>hello,i want to recommend this application to you.</p>
                    </div>
                </li>
                <!-- 第三个板块开始 -->
                <li class="menu">
                    <div class="social FaceBook">
                        <a href="">facebook</a>
                    </div>
                    <div class="content">
                        <h1>Facebook</h1>
                        <p>hello,i want to recommend this application to you.</p>
                    </div>                  
                </li>
                <!-- 第四个板块开始 -->
                <li class="menu">
                    <div class="social LinKedin">
                        <a href="">linkedin</a>
                    </div>
                    <div class="content">
                        <h1>Linkedin</h1>
                        <p>hello,i want to recommend this application to you.</p>
                    </div>
                </li>
                <!-- 第五个板块开始 -->
                <li class="menu">
                    <div class="social Instagram">
                        <a href="">Instagram</a>
                    </div>
                    <div class="content">
                        <h1>Instagram</h1>
                        <p>hello,i want to recommend this application to you.</p>
                    </div>
                </li>
                <!-- 第六个板块开始 -->
                <li class="menu">
                    <div class="social github">
                        <a href="">github</a>
                    </div>
                    <div class="content">
                        <h1>Github</h1>
                        <p>hello,i want to recommend this application to you.</p>
                    </div>
                    
                </li>
            </ul>
        </div>
    </body>
</html>

图标可以在iconfont官网下载使用,也可以在BootCDN上搜索genericons 用link链接引入直接使用。
<link href="https://cdn.bootcdn.net/ajax/libs/genericons/3.1/genericons.css" rel="stylesheet">

下面是 CSS部分
首先先reset网页基本样式,设置容器大小背景颜色字体,再设置标题样式

*{
    margin: 0;
    padding: 0;
    border: 0;
}
body{
    background-color: #222;
    font-family: Arial, Helvetica, sans-serif;
}
.container{
    width: 90%;
    margin: 50px auto;
  /*水平居中*/
}
header h1{
    color: white;
    margin-bottom: 10px;
    text-align: center;
}

下面设置列表的CSS样式

.contentall{
    background-color: #333;
    width: 100%;
    height: 200px;
    min-width: 800px;
    font-size: 0;/*先设置字体隐藏后续显示*/
    overflow: hidden;/*隐藏超出部分,不出现滚轮*/
    display: block;/*属性为块元素独占一行*/
    list-style: none;
}
.menu{
    background-color: #444;
    border-right: #333 1px solid;
    overflow: hidden;/*隐藏超出部分,不出现滚轮*/
    width: 80px;
    height: 200px;
    display: inline-block;/*属性为行内块元素,可以在同一行排列*/
    position: relative;
    margin: 0;
    transition: all 0.5s ease-in-out 0.1s;/*设置过渡属性,使下面的伪类变换更加流畅顺滑*/
}

设置li的hover属性,使宽度增加,内容区域显示。即鼠标移入时右侧伸长显示内容区域

.menu:hover{
    width: 450px;   
}

下面设置内容区域的样式

.menu .content{
    background-color: #FFFFFF;
    width: 360px;
    height: 200px;
    margin-left: 80px;/*改变左外边距使内容区域和图片区域位置更换*/
    position: relative;
    padding: 50px 0 0 15px;
}
.menu .content h1{
    font-size: 2.5rem;/*设置字体大小使字体显示*/
    margin-bottom: 10px;
}
.menu .content p{
    font-size: 0.85rem;
    line-height: 1.4rem;
    padding-right: 30px;
}

要达到图片区域鼠标移入切换的效果,需要在a标签前后增加::before和::after伪类

.social a::before,.social a::after{
    width: 80px;
    height: 200px;
    position: absolute;
    text-indent: 0;
    padding-top: 90px;
    padding-left: 25px;
    display: block;
    font: normal 30px Genericons;
    color: #fff;
    transition: all 0.4s ease-in-out 0.1s;
/*添加过渡属性使鼠标移入时变化流畅顺滑,达到手风琴的效果*/
    
}
.social a::after{
    font-size: 48px;/*设置移入后显示的图标变大*/
    padding-left: 20px;
    padding-top: 80px;
    margin-left: 85px;/*鼠标未移入时该部分隐藏*/

下面引入genericons图标,设置::after内容颜色不单一(\f213为特定图标的unicode编码,可去官网查看)

.youtube a::before,.youtube a::after{
    content:"\f213";
}
.youtube a::after{
    background-color: #f00;
}
.FaceBook a::before,.FaceBook a::after{
    content:"\f204";
}
.FaceBook a::after{
    background-color: #3b5998;
}
.Instagram a::before,.Instagram a::after{
    content:"\f215";
}
.Instagram a::after{
    background-color: #6dc993;
}
.LinKedin a::before,.LinKedin a::after{
    content:"\f208";
}
.LinKedin a::after{
    background-color: #00a9cd;
}
.Twitter a::before,.Twitter a::after{
    content:"\f202";
}
.Twitter a::after{
    background-color: #6dc5dd;
}
.github a::before,.github a::after{
    content:"\f200";
}
.github a::after{
    background-color: #6e5494;
}

最后设置hover伪类,鼠标移入时原先before板块向左隐藏,after板块向左移动出现,实现手风琴效果,且通过过渡效果变得流畅舒适。

.menu:hover .social a::before{
    margin-left: -100px;
}
.menu:hover .social a::after{
    margin-left: -5px;

简单的滑动手风琴效果已经实现,下面我们来设置网页的响应式布局。使我们的滑动手风琴可以适应不同显示器的大小。我们使用媒体查询@media来设置我们不同分辨率的样式。

@media (max-width:950px){/*当最大宽度达到950px时切换到以下样式*/
    .container{
        width: 70%;
    }
    .menu{
        display: block;
        width: 100%;
        border-bottom: 3px #333 solid;/*分辨率减小,列表竖向排列方便阅读*/
    }
    .contentall{
        display: block;
        height: auto;
        min-width: 450px;
        
    }
    .menu .content{
        width: 85%;
    }
    .menu:hover{
        width: 100%;/*防止移入时右侧内容部分左移*/
    }
}

效果如下图

自适应手风琴.png

而当分辨率更小达到手机类时,再设置一个媒体查询来自适应。

@media (max-width:680px) {
    .container{
        width: 95%;
    }
    .contentall{
        width: 100%;
        min-width: 350px;
    }
}
自适应手风琴2.png

自适应的界面使不同分辨率的用户都能有更好的体验。
到此,一个滑动手风琴的Demo就完成了。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,830评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,992评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,875评论 0 331
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,837评论 1 271
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,734评论 5 360
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,091评论 1 277
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,550评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,217评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,368评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,298评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,350评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,027评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,623评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,706评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,940评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,349评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,936评论 2 341

推荐阅读更多精彩内容