/* 清除默认样式 */
* {
margin: 0;
padding: 0;
}
input {
outline: none;
border: 0;
}
a {
text-decoration: none;
}
/* 清除浮动的样式 */
.clearfix::after,
.clearfix::before {
content: "";
display: block;
height: 0;
visibility: hidden;
clear: both;
}
.clearfix {
*zoom: 1;
}
基本的css样式
/* 浮动样式 */
.fl {
float: left;
}
.fr {
float: right;
}
/* 确定版心 */
.banxin {
margin: 0 auto;
width: 1200px;
background: pink;
}
1 首先看大致看一下整个布局, 在这里我们可以分成2个盒子
2 而且内容在版心里面
1 左边一个大图片盒子 leftBox
2 右边一个大图片盒子 rightBox
3 css样式如下:
1 首先我们的内容都在版心之中,所以我们需要给我的父盒子加一个class="banxin",目的就是把我们的内容限制在版心当中
2 再来分析版心里面的两个盒子,我们观察发现 里面的两个大盒子在一排显示,但是我们的div 却又是块级元素,默认占一整行,所以这个时候我们可以考虑用定位和浮动,但是我们一般对整个大的布局,一般采用浮动,这样更加高效,快捷,方便
2.1 我们观察发现 leftBox 可以设置左边浮动
2.2 rightBox 内容是靠着右边,可以设置右边浮动
3.1 由于我们给版心里的两个盒子都设置了浮动,而且版心我们又没有设置高度,所以这个时候我们版心的高度为0
解决办法: 1 给版心盒子设置一个高度(500px)
2 给版心清除浮动
3.3 这里我们选择给banxin清除浮动
代码如下:
3.4 为了更好的控制banxin 下面的2个盒子,我们给版心增加一下 bigBox的类名
.bigBox .leftBox
{
width: 235px;
/* height: 615px; */
}
.bigBox .rightBox
{
width: 940px;
}
6.1 左边盒子是一个商品展示 图片, 这个图片可以点击 那么我的HTML 样式结构可以写成下面这个结构样式
6.2 设置这个图片的样式
由于a 标签是行内元素,那么我们可以先让a标签变成块级元素或者行内块元素
.leftBox a
{
display: block
}
6.3 由于图片是一个行内块元素,而且默认有3像素的边框
所以我们有2种方法解决这个问题
.bigBox .leftBox img
{
display: block;
width: 235px;
height: 615px;
/* float: left; 第一种写法: a 盒子里的图片浮动,那么这样就有一个不好的影响,a 的高度变为0 了 */
display: block/*第二种写法: img本来就行内块元素,可以转换成块级元素 */
}
7.0 我们发现里面的文字都是居中对齐的,所以这个时候我们可以给父盒子一个文字对齐的样式
.bigBox .rightBox
{
width: 940px;
/* height: 60px; */
/* background: red; */
text-align: center
}
7.1 我们接着分析得出右边盒子商品展示,可以发现里面是一个大的ul盒子里面包含8 个li标签组成的
代码如下:
7.2.1 我们再分析,发现里面的8个li盒子,有4个li盒子在一排显示,但是我们的li标签又是块级元素,默认是独占一行,所以这个我们需要用到浮动来进行布局
7.2.2 分析发现li 标签默认有一个小黑色圆点,这个不是我们需要的
7.2.3 分析每个li 标签里面的内容,发现
里面的商品展示高度跟宽度可以测量出来
代码如下 :
.rightBox li
{
list-style: none;
float: left;
width: 220px;
height: 300px;
}
7.3 我们来写第一个li 盒子里面的内容,只要我们把第一个li盒子里的内容写好了,后面只需要复制就可以了
7.3.1 通过分析我们发现这个li 盒子里面的商品展示可以分为三个部分
1 第一个部分是 “减50元”
2 第二个部分商品图片展示
3 第三个部分是商品文字说明
红米6A
商品文字说明
7.4 由于发现这个盒子是一张图片,那么就会有3px边框间隙的问题,所以我们也可以把 img 转成了 块级元素
而且 a 标签行内元素,这个时候为了让a 标签包含img 我们可以把a 标签转换成 块级元素
.rightBox .showP
{
display: block;
}
.rightBox img
{
display: block;
}
7.5 接下来我们再来分析 商品描述盒子里面内容 可以发现里面有三部分组成
代码如下
AI人脸解锁,小巧全面屏,高性能处理器
549
599
7.6.1 这个我们再来分析hotwords 这部分的内容,发现是用定位最容易实现
子盒子用绝对定位,父盒子用相对定位
代码如下:
.rightBox li
{
width: 220px;
height: 300px;
list-style: none;
float: left;
background-color: white;
/*设置li 的背景颜色为白色*/
position: relative;
}
.hotwords
{
position: absolute;
top:0;
left:50%;
transform: translateX(-50%)
}
7.6.2 发现默认字体太大了,所以这个时候我们可以设置一个合适的字体大小,这里我设置的是12px
.rightBox li
{
font-size: 12px; /*新增加设置字体的大小*/
width: 220px;
height: 300px;
list-style: none;
float: left;
background-color: white;
/*设置li 的背景颜色为白色*/
position: relative;
}
7.6.3 我们再来分析商品文字描述盒子里面的内容
1 发现p标签里面的文字都是一行显示,而且是超多盒子里面的内容是用省略号表示的
2 原价被划掉
3 折扣价是大红色显示的
所以我们的代码如下:
.description p {
white-space: nowrap;
/*强制不换行*/
text-overflow: ellipsis;
/*超出显示省略号*/
overflow: hidden;
}
.yPrice {
text-decoration: line-through;
}
.zPrice {
color: red;
}
7.6.4 当我们打开网页发现,我们离设计图还有差距
为了让我们尽量100%还原设计图
1 给每个li 标签一个右边跟下边的距离
2 给整个body 一个背景颜色
body {
background: #f5f5f5;
}
.rightBox li {
width: 220px;
height: 300px;
margin: 0 0 15px 15px; /*这是为了给每个li 标签一个向下跟向右的距离*/
list-style: none;
float: left;
font-size: 12px;
background-color: white;
position: relative;
/* border: 1px solid transparent; */
}
1 我们进行写页面之前一定要分析分析分析,重要的事说三遍
2 在进行布局的时候,先整体布局,设置几个大盒子
3 先把常用的默认样式,公共样式写好
4 大的布局首选浮动进行布局,然后里面的内容根据实际情况进行定位
5 定位的时候,子盒子绝对定位,父盒子相对定位
6 文字居中 一般用 text-align:center
7 img 图片可以多设置 display:block 可以消除图片的3px 的间隙
8 单行文字,单行文字居中,可以考虑设置
高度等于行高
9 块级元素(有宽高的块级元素)水平居中可以设置成:margin:0 auto