Skip to content

div+css网页布局时注意事项 1.对于网页进行分析,划分方块。 2.选择器的优先级及精确定位需要设置样式的标签。 3.浮动属性对于其他元素的影响 4.使用定位属性时,精确找到定位参考点。

解决8像素问题:

加上:padding: 0px; margin: 0px;

css
body,img,ul,li,a,h6,p{
    padding: 0px;
    margin: 0px;
    list-style: none;
    text-decoration:none;
}

让div居中的方法:

加上margin: npx auto; 也就是上下n像素,左右自动,自动就会居中

一般会在我们认知的最外层(我们常称作定位元素)的最外层再加一个div(宽度设置为100%),这样方便控制我们的最外层(定位元素)的一个位置(看实际情况)

css
.header{
    width:1200px;
    height:40px;
    /*border: 1px solid red;*/
    margin: 0px auto;
}
css
#logo{
    width:1200px;
    height:120px;
    border:1px solid red;
    margin:10px auto;
}

定位策略及需要注意的问题:

css计算属性:calc,注意运算符两端必须要加空格,数值要加单位px

css
#banner{
    width:100%;
    height:516px;
    background: #F4F4F4;
    position: relative; /*父类设置成相对定位,才可以让子类以这个div为参照物*/
    /*relativ如果不设置top,left等属性,那就相当于加了一个标记,但是位置不改变,是让父类做参照物的一个策略*/
}
.banner>img{
    width:100%;
}
#p_content{
    width:1200px;
    border:1px solid red;
    height:516px;
    position: absolute; /*利用绝对定位,以其父类#banner为参照物,则可以实现这个div去贴合#nav的div,并且不占据原来的物理位置*/
    top:0px;/*实现这个div去贴合#nav的div*/
    /*css计算属性:calc*/
    /*因为用的是绝对定位,所以当前这个div脱离了文档流,用margin:0px auto就不好使了*/
    left:calc(50% - 1200px / 2); /*计算距离左侧的距离,利用left结合absolute绝对定位,必须有单位px*/
    /*页面的一半-div的一半,就可以居中了*/
}

设置背景颜色:

backgroung:颜色(简写)

background-color:颜色(全写)

css
/*fixed定位也是一样,会使div脱离文档流*/
#sidebar{
    width:80px;
    height:360px;
    border:1px solid #ccc;
    position: fixed;
    right:0px;
    top:calc(50% - 360px / 2); /*用top结合fixed*/
    background: #fff;
    /*圆角边框*/
    border-radius:10px 0px 0px 10px; /*左上右上右下左下*/
}

设置div里面的文字水平居中:

css
text-align:center; /*文字水平居中*/

设置div里面的文字垂直居中:

设置 height与line-height(文字的行高)的大小一样

css
.footer_bottom{
    height:28px;
    border:1px sienna solid;
    text-align:center; /*文字居中*/
    /*padding-top: 5px;* 这样是不好用的/ 
    line-height:28px;
    color:#8492A6;
    font-weight:bold; /*加粗*/
    border: 1px #ef092b solid;
}

当然也可以让文字靠下,那么就把line-height设置的大一些:38>28

css
.footer_bottom{
    height:28px;
    border:1px sienna solid;
    text-align:center; /*文字居中*/
    line-height:38px;
    color:#8492A6;
    font-weight:bold; /*加粗*/
    border: 1px #ef092b solid;
}

可以把定位属性left,right,top,bottom,设置成为负值,让其超出原有的div,呈现特殊的效果

css
.footer_top_left>img{
    width:130px; /*让其宽度缩小*/
    position: absolute; /*以父类为参照物*/
    top:-30px;
    left:calc(50% - 130px / 2);
    /*margin: 40px auto; 不管用,因为它的父类浮动了*/
}

设置背景图片:

css
background: url("../img/javajb.png") no-repeat;

或:

css
background-image: url("../img/javajb.png") no-repeat;

设置==div里面的p标签(或其他标签)里面的文字居中(垂直或者水平)==:

或者设置里面的图片img标签居中:

利用margin和padding等属性来进行定位

css
.footer_top_left>p{
    /*border:1px solid blue;*/
    margin-top: 70px;
    margin-right: 10px;
    padding-top: 40px;
    padding-left: 15px;
    font-size:14px;
    text-indent: 2em;
    color:#8492A6;
}

或:

css
.footer_top_center>div>h6{
    font-size:18px;
    /*border-bottom:1px solid blue;*/
    padding-bottom: 10px;
    margin-bottom: 15px;
}
.footer_top_center>div>ul>li{
    /*border:1px solid fuchsia;*/
    padding: 10px 5px;
}

或:

css
.footer_top_right>img{
    width:100px;
    height:100px;
    margin-left:10px;
    margin-top: 70px;
}

注:也就是说,==直接div里面的文字==和==div的标签里面的文字==在居中时的策略是不一样的

设置段落标签p内的文字首行缩进:text-indent

css
text-indent: 2em;

设置div里面的无序列表:

ul>li>a>img>span 一般都是这种递进结构

image-20220407141526450
html
<div class="footer_top_center">
<div>
    <h6>新手指南</h6>
    <ul>
        <li><a href="">挑选课程</a></li>
        <li><a href="">购买课程</a></li>
        <li><a href="">学习课程</a></li>
        <li><a href="">配套资源</a></li>
    </ul>
</div>
</div>
css
.footer_top_center>div{
    float:right; /*都向右浮动,但是会颠倒顺序*/
    margin-right: 50px;
    margin-top: 50px;
    text-align: center;
}
.footer_top_center>div>h6{
    font-size:18px;
    border-bottom:1px solid blue;
    padding-bottom: 10px;
    margin-bottom: 15px;
}
.footer_top_center>div>ul>li{
    /*border:1px solid fuchsia;*/
    padding: 10px 5px;
}
.footer_top_center>div>ul>li>a{
    color:#8492A6;
}
.footer_top_center>div>ul>li:hover>a{
    color:#306eff;
    text-decoration:underline;
}

注:这种无序列表可以是横向的,也可以是竖向的:

但是这样的话,必须设置ul及里面属性的浮动属性

css
.header_right{
    width:400px;
    height:40px;
    /*border:1px solid #000000;*/
    float:right;
}
.header_right>ul{ /*ul靠右,大容器*/
    float:right;
}
.header_right>ul>li,.header_right>ul>li>a,.header_right>ul>li>a>img{ /*小内容靠左*/
    float:left;
}
image-20220407170950231

实现文字的下面有一条小横线:

css
border-bottom:1px solid blue;

####hover属性

鼠标动作效果:

例1:当鼠标放到li上面时,让它里面的a变成蓝色,并且加下划线:

css
.footer_top_center>div>ul>li:hover>a{
    color:#306eff;
    text-decoration:underline;
}

或者:反过来也可以

css
.footer_top_center>div>ul>li>a:hover{
    color:#306eff;
    text-decoration:underline;
}

例2:

css
#top_nav{ /*其实就是.header_left>div:last-child>div*/
    display: none; /*默认是隐藏起来的*/
}
.header_left>div:last-child:hover>#top_nav{ /*放到父元素div:last-child上时,子元素top_nav显示*/
    display: block; /*display属性设置为bolock就显示了*/
}

当元素颜色与背景颜色一样的时候,需要用阴影给边框:shadow属性,如果是文本标签i,那么就用text-shodow

css
text-shadow:1px -1px #ccc,-1px -1px #ccc; /*需要用阴影属性给边框*/