[Web 每日一练] 图文练习(4)
大家好,我是Nick,今天分享一篇关于如何将一张大图分解成更小的模块,并使用HTML和CSS来实现布局的文章。我们先来看一下目标图吧!
乍一看,这张图确实有点复杂,不过我们可以通过模块化思维来拆解它。我们可以把这张大图想象成一个大的div容器,里面包含四个小的div块。每个小块都有自己的背景图片和文字内容。通过这样的分层处理,整个布局就变得清晰明了啦!
注意!在布局过程中,可能会遇到高度坍塌和浮动问题哦!这些问题在前端开发中是很常见的。不过别担心,我会一步步教你怎么解决它们。
实现如下:
首先,我们需要定义一个大的容器div(称为section),设置一个固定的宽度,比如400px,并且使用overflow:hidden来防止内部元素浮动导致的布局问题。
然后是每个小块的div(item),设置宽度为180px,高度为173px,并使用float:left让它们水平排列。同时,为了保持间距,我们在item上添加了10px的margin。
接下来是每个item内部的结构:一个pic div用来显示背景图片,一个title div显示标题,还有一个bottom div用来显示价格和浏览量。
在pic div中,我们通过设置background-size:100% 100%让背景图片填满整个区域。同时,pic div内部有一个p标签用来显示文字,通过调整margin-top和text-align:right来实现文字在图片上的右下角显示。
在title div中,我们使用了文本溢出的技巧,通过overflow:hidden、text-overflow:ellipsis和white-space nowrap来使得长文本自动显示成省略号,这样既保证了布局的整洁又不会让文字溢出影响美观。
最后的bottom div同样使用了float:left来让价格和浏览量两部分左对齐和右对齐,这样整个布局就显得非常整齐美观了。
通过这样的模块化分解,我们成功地将一张复杂的大图分解成了多个简单的div块,并通过合理的CSS布局和对齐,最终实现了目标效果。
大家好我是 Nick ,今天分享一篇比较难的图文组合,我们话不多说,直接来看实现图吧!
乍一看感觉非常难,但是我们还是运用模块化的思维,来对图片做切割。我们可以将一张大的图片看成一个 div ,大的 div 里有小的四个 div ,小的 div 里面有背景图片、和字体,我们对它在细化,整个图片就完成了;
注意:高度坍塌和浮动问题哦!图片上的文字可以用背景图解决哦!。
实现:
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> <style>*{ margin: 0; padding: 0; list-style: none;}.section{ width: 400px; overflow: hidden;}.item{ width: 180px; height: 173px; float: left; margin: 10px;}.item .pic{ height: 101px; background-size: 100% 100%; overflow: hidden;}.item .pic p{ color: white; font-size: 14px; height: 21px; line-height: 21px; margin-top: 80px; margin-right: 5px; text-align: right;}.item .title{ font-size: 18px; height: 40px; line-height: 40px; /* 一下三行会让文本出现省略号 */ overflow: hidden; text-overflow: ellipsis; white-space: nowrap;}.item .bottom{ overflow: hidden;}.item .bottom span{ float: left; width: 50%; height: 30px; line-height: 30px;}.item .bottom .money{ font-size: 16px; color: #ff6050;}.item .bottom .looks{ text-align: right; font-size: 14px; color: #a5a7b4;} </style>