赞
踩
最近web 的css模块快讲完了,每周例行的周一实验课开始,只是这节课的实验内容有点不同于往常,这里是第一次用到了悬浮窗进行html页面的设计。
首先思路是从上周的课程“定位”入手,发现只是用position的fixed值在浏览器窗口建立一个悬浮窗的设计并不能实现我的展开效果,这说明老师开始悄悄上难度了,结合之前学过的浮动和盒子模型,我设计了以下以table格式展开的悬浮窗的模型。
.header{ background-image: url("img/Mountain.jpg"); height: 200px; } .sidebar{ background-color:aqua; width: 240px; height: 400px; margin-bottom: 500px; float: left; } .toolbox{ background-color:brown; width: 200px; height: 400px; position: fixed; left: 97%; } .toolbox:hover{ left:91%; } .content{ float:left; width: 82%; margin-left: 2%; } .block{ float: left; background-color: chartreuse; width:900px; height: 600px; margin: 3px; padding: 20px 0px; display: flex; justify-content: center; align-items: center; } .block img{ height: 550px; } .menu-container { position: fixed; top:170px; width: 300px; height: 30px; display:flex; } .menu{ background-color: plum; position:relative; width:50px; height: 30px; margin: 0px; overflow: hidden; z-index: 0; } .menu th{ background-color:purple; } .menu td{ background-color: pink; } .menu:hover{ width: 85px; height: 85px; margin-right: -35px; position: relative; z-index: 1; } .footer{ background-color: darkgreen; text-align: center; }
悬浮窗展开的效果可以用div父元素嵌套三个div (div里面是table)来进行总体框架的建设。
要进行展示的项可以用th表头进行书写,注意要进行对齐的话要colspan两个空格,因为下面要进行展开的td标签有两列,不扩展的话第一行会有一个空格,从而使三个表头的项不对齐。
要实现隐藏的效果,就是把宽高设置的小一点,只能显示一个表头所能显示的项,然后overflow用hidden就能实现隐藏。
展开的话就用嵌套里面的类的伪类hover改变他的宽和高,然后注意要使在展开的时候其他的项不动,要计算好隐藏时的宽高和展开时的宽高的差值,用一个负的margin进行弥补,从而实现展开而不动的效果。
注意图层也要改变,改成z-index : 1,在最上层显示,否则会和当前图层的元素有冲突,被当前图层的元素覆盖掉。
最后,还要注意要实现水平排列三个项的需求的话,要使用display的flex布局进行排列。
- <!DOCTYPE html>
- <html lang="en" dir="ltr">
-
- <head>
- <meta charset="utf-8">
- <title>史诗级定位</title>
- <link rel="stylesheet" href="b.css">
- <style media="screen">
- * {
- margin: 0px;
- padding: 0px;
- font-size: 20px;
- }
- </style>
- </head>
-
- <body>
- <div class="header">
- <!-- <img src="img/Mountain.jpg" alt=""> -->
- </div>
- <div class = "menu-container">
- <div class = "menu">
- <table >
- <tr>
- <th align="left" colspan="2"> 盲盒</th>
- </tr>
- <tr>
- <td >小猫</td> <td>小猫</td>
- </tr>
- <tr>
- <td>小猫</td> <td>小猫</td>
- </tr>
- </table>
- </div>
- <div class = "menu">
- <table >
- <tr>
- <th align="left" colspan="2"> 盲盒</th>
- </tr>
- <tr>
- <td >小猫</td> <td>小猫</td>
- </tr>
- <tr>
- <td>小猫</td> <td>小猫</td>
- </tr>
- </table>
- </div>
- <div class = "menu">
- <table >
- <tr><th align="left" colspan="2"> 盲盒</th></tr>
- <tr>
- <td >小猫</td> <td>小猫</td>
- </tr>
- <tr>
- <td>小猫</td> <td>小猫</td>
- </tr>
- </table>
- </div>
- </div>
- <div class="container">
- <div class="toolbox">
- <ul>
- <li><img src="img/bookBtnRed.png" alt="">这是一个菜单</li>
- <li><img src="img/bookBtnRed.png" alt="">这是一个菜单</li>
- <li><img src="img/bookBtnRed.png" alt="">这是一个菜单</li>
- </ul>
- </div>
- <div class="sidebar">
- hahah
- </div>
- <div class="content">
- <div class="block">
- <img src="img/Mountain.jpg" alt="">
- </div>
- <div class="block">
- <img src="img/Mountain.jpg" alt="">
- </div>
- <div class="block">
- <img src="img/Mountain.jpg" alt="">
- </div>
- <div class="block">
- <img src="img/Mountain.jpg" alt="">
- </div>
- </div>
- <div style="clear:both;"></div>
- </div>
-
- <div class="footer">
- 欢迎来到猫猫之家 xx & yy 喵~
- </div>
- </body>
-
- </html>
最后说下总结吧,当时小草老师说发明css的人简直是个天才的时候真的还不能完全理解他的意思,一个很简单的样式的效果有什么神乎其神,现在写多了慢慢发现其实这是用编程的面向对象的方法对html的网页进行设计,面对一个板块,可以进行分工,可以进行纵向的某个模块的延深,可以专门对一个特定的效果进行分层次的设计(从这点上来说,是艺术不过分),同时呢css能把最基本的展示效果和html的标签的语义分开来进行专门的设计,分工合作我觉得的确清晰明了。盒子模型的确还有很多函待开发的地方,相信会开出更多更可爱的猫猫盲盒。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。