后端顺带学点前端:CSS实现简单的响应式博客布局
2021-01-19 09:23 独孤残云 阅读(254) 评论(0) 编辑 收藏 举报搭建一款产品原型时,萌生了学一点前端的想法,记录所学,备忘之用。
这里推荐一个很好的入门前端的站点:菜鸟教程
里面的内容很基础,适合入门之用,同时也支持在线编辑器,可以直接所见所得
先从一篇支持响应式的博客布局开始,代码来自菜鸟教程
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>菜鸟教程(runoob.com)</title> <style> * { box-sizing: border-box; } body { font-family: 微软雅黑; padding: 10px; background: #f1f1f1; } /* 头部标题 */ .header { padding: 30px; text-align: center; background: white; } .header h1 { font-size: 50px; } /* 导航条 */ .topnav { overflow: hidden; background-color: #333; } /* 导航条链接 */ .topnav a { float: left; display: block; color: #f2f2f2; text-align: center; padding: 14px 16px; text-decoration: none; } /* 链接颜色修改 */ .topnav a:hover { background-color: #ddd; color: black; } /* 创建两列 */ /* Left column */ .leftcolumn { float: left; width: 75%; } /* 右侧栏 */ .rightcolumn { float: left; width: 25%; background-color: #f1f1f1; padding-left: 20px; } /* 图像部分 */ .fakeimg { background-color: #aaa; width: 100%; padding: 20px; } /* 文章卡片效果 */ .card { background-color: white; padding: 20px; margin-top: 20px; } /* 列后面清除浮动 */ .row:after { content: ""; display: table; clear: both; } /* 底部 */ .footer { padding: 20px; text-align: center; background: #ddd; margin-top: 20px; } /* 响应式布局 - 屏幕尺寸小于 800px 时,两列布局改为上下布局 */ @media screen and (max-width: 800px) { .leftcolumn, .rightcolumn { width: 100%; padding: 0; } } /* 响应式布局 -屏幕尺寸小于 400px 时,导航等布局改为上下布局 */ @media screen and (max-width: 400px) { .topnav a { float: none; width: 100%; } } </style> </head> <body> <div class="header"> <h1>我的网页</h1> <p>重置浏览器大小查看效果。</p> </div> <div class="topnav"> <a href="#">链接</a> <a href="#">链接</a> <a href="#">链接</a> <a href="#" style="float:right">链接</a> </div> <div class="row"> <div class="leftcolumn"> <div class="card"> <h2>文章标题</h2> <h5>2019 年 4 月 17日</h5> <div class="fakeimg" style="height:200px;">图片</div> <p>一些文本...</p> <p>菜鸟教程 - 学的不仅是技术,更是梦想!菜鸟教程 - 学的不仅是技术,更是梦想!菜鸟教程 - 学的不仅是技术,更是梦想!菜鸟教程 - 学的不仅是技术,更是梦想!</p> </div> <div class="card"> <h2>文章标题</h2> <h5>2019 年 4 月 17日</h5> <div class="fakeimg" style="height:200px;">图片</div> <p>一些文本...</p> <p>菜鸟教程 - 学的不仅是技术,更是梦想!菜鸟教程 - 学的不仅是技术,更是梦想!菜鸟教程 - 学的不仅是技术,更是梦想!菜鸟教程 - 学的不仅是技术,更是梦想!</p> </div> </div> <div class="rightcolumn"> <div class="card"> <h2>关于我</h2> <div class="fakeimg" style="height:100px;">图片</div> <p>关于我的一些信息..</p> </div> <div class="card"> <h3>热门文章</h3> <div class="fakeimg"><p>图片</p></div> <div class="fakeimg"><p>图片</p></div> <div class="fakeimg"><p>图片</p></div> </div> <div class="card"> <h3>关注我</h3> <p>一些文本...</p> </div> </div> </div> <div class="footer"> <h2>底部区域</h2> </div> </body> </html>
效果如下所示:
我的网页
重置浏览器大小查看效果。
文章标题
2019 年 4 月 17日
一些文本...
菜鸟教程 - 学的不仅是技术,更是梦想!菜鸟教程 - 学的不仅是技术,更是梦想!菜鸟教程 - 学的不仅是技术,更是梦想!菜鸟教程 - 学的不仅是技术,更是梦想!
文章标题
2019 年 4 月 17日
一些文本...
菜鸟教程 - 学的不仅是技术,更是梦想!菜鸟教程 - 学的不仅是技术,更是梦想!菜鸟教程 - 学的不仅是技术,更是梦想!菜鸟教程 - 学的不仅是技术,更是梦想!
关于我
关于我的一些信息..
热门文章
图片
图片
图片
关注我
一些文本...
代码量有限,但是已经初具规模,页面会根据设备的屏幕宽度,自动调整为两列或是一列显示。
总结归纳一部分心得,因为笔者是CSS初学,内容难免过于浅显:
其实笔者之前一直都觉得html布局很神奇,不管css怎么写,各个元素总是能找到自己合适的位置,并且组合在一起有机的呈现出来(虽然很多时候不是我想要的样子 笑)。但是既然叫超文本标记语言,就说明html和我们平时写纯文字一样,存在某种关联。
就好比我们写文字是一行一行写,写完之后另起一行,整体看是从上而下的纵向布局——html其实同理。
从最上边的头部区域、菜单区域、内容区域再到底部区域,大致如下:
而后我们再来调整各个区域内部的细节。
float —— 浮动布局,实现纵向布局区域内的横向布局(一个曾经困扰了我很久的话题,😊)
用起来其实也很简单,float:left 就是各个元素靠左对齐,float:right 就是各个元素靠右对齐。
比如菜单部分的用法,最后一个使用局部样式控制为右对齐;
再比如中间内容使用float分离为左右两部分内容。
padding和margin —— 边距控制
网上可以查到相当多的关于两者区分的文章,并且配上了形象的配图来说明问题。其实在笔者看来,这两个很好区分:
举个例子,外边是A,里边是B,A使用padding来限制B和自己的距离,B使用margin来控制自己相对于A的位置,二者作用对象不同。
margin更适合子元素控制自己的相对位置。
footer —— 底部区域
用的应该算是比较多了,也相对简单,这里贴一篇footer永久固定在页面底部的方法:来源
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title></title> <meta charset="utf-8" /> <style> body { padding-bottom: 50px; } .footer { position: fixed; left: 0px; bottom: 0px; width: 100%; height: 50px; background-color: #eee; z-index: 9999; } </style> </head> <body> 内容,可以大量复制看效果<br /> <div class="footer">固定在底部</div> </body> </html>
@media screen and (max-width: 800px){
/*某些元素的属性重新赋值*/
}
用于响应式布局,屏幕尺寸低于800时执行一个怎样的变更
:hover —— 鼠标悬停操作,用于实现高亮等效果