HTML/CSS书写中的一些问题
本文最后更新于 188 天前,其中的信息可能已经有所发展或是发生改变。

margin塌陷问题

第一个子元素的上margin会作用在父元素上,最后一个子元素的下margin会作用在父元素上。

如图,inner1和inner2为大方框的子元素,当修改inner1的margin-top时,inner不会下移,而大方框则会下移,因为inner1的margin样式作用在了大方框上,这就是margin发生了塌陷。如果修改inner2的margin-bottom的值,也会发生margin塌陷,样式不会作用在inner2上,则是作用在了大方框上。

解决方法

1、给父元素设置一个不为0的padding值

{
padding:1px
}

2、给父元素设置宽度不为 0 的border。

   {
border:1px solid red;
}

注:无法将大小设为0px来欺骗编辑器,但可以将border颜色设置为transparent(透明色)来欺骗自己(虽然看不到,但border依然存在)

3、给父元素设置 css 样式 overflow:hidden

相对以上两种方式更好,因为没有改变原来元素的样式

margin合并问题

上面兄弟元素的下外边距和下面兄弟元素的上外边距会合并,取一个最大的值,而不是相加。

如图,给盒子1margin-bottom属性时,盒子1与盒子2会分开,在给盒子2margin-top属性,正常应为两个盒子的距离为——盒子1的margin-bottom+盒子2的margin-top,但结果却是间隔距离为两个值中的最大值,而不是两个值的和

解决方法

其实也不能叫解决方法,只能是避免方法

*布局的时候上下的兄弟元素,只给一个设置上下外边距就可以了。

元素之间的空白问题

行内元素、行内块元素,彼此之间的换行会被浏览器解析为一个空白字符。

如图,写代码时并没有设置元素的间隔,但样式还会有间隔隔开,因为代码的回车(Enter)键编译器识别为了空格,所以元素与元素之间就有了间隔

解决方法:

1、去掉换行和空格

不太推荐,代码可读性降低,也不可不能一直可一行写下去

2、给父元素设置 font-size:0,再给需要显示文字的元素,单独设置字体大小

行内块的幽灵空白问题

行内块元素与文本的基线对齐,而文本的基线与文本最底端之间是有一定距离的。

如图,并没有设置背景高度,正常应该由图片高度顶起,但图片并没有紧贴于背景底部,而是出现了一块余留区域(红色方框区域),与基线对齐有关

解决方法:

1、给行行内块设置vertical (垂直方向对齐),值不为baseline 即可,设置为middel 、bottom、top均可

2、若父元素中只有一张图片,设置图片为display:block 。

3、给父元素设置font-size: 0 。如果该行内块内部还有文本,则需单独设置font-size

解决浮动产生的影响(清除浮动)

设置浮动后往往会出现一些问题,父元素塌陷,后面的元素前移等,破坏了样式的结构,但浮动还不能删除,就要清除浮动的影响

解决方法:

1、给父元素指定高度。

只能解决父元素塌陷的问题

2、给父元素也设置浮动

可能会带来其他影响

3、给父元素设置overflow:hidden 。

只能解决父元素塌陷问题,并不能完全解决浮动带来的影响

4、在所有浮动元素的最后面,添加一个块级元素,并给该块级元素设置clear:both 。

清除最后一个元素之前所有元素浮动带来的影响

5、给浮动元素的父元素,设置伪元素,通过伪元素清除浮动,原理与方案四相同(推荐)

.clearfix{
    content: " ";
    display: block;
    clear: both;
}

写样式之前先写好浮动,和清除浮动,写样式时直接添加到类名中便可使用

//左浮动
.leftfix{
    float: left;
}
//右浮动
.rightfix{
    float: right;
}
//清除浮动影响
.clearfix::after{
    content: " ";
    display: block;
    clear: both;
}

为了后续样式不出现混乱,还是有浮动后,父元素清除浮动。

布局中的一个原则:设置浮动的时候,兄弟元素要么全都浮动,要么全都不浮动。

hover出现闪烁问题

在后续编写中发现当图片或其他元素上设置hover样式时可能会发生频繁闪烁现象

解决方法:

子元素添加了一css样式 pointer-events: none; 于是就解决了闪烁问题。

但这个元素的 事件、连接、悬浮样式都没有了 ,如设置的超链接等样式会失效,适合仅实现hover样式且hover样式中无其他要求的情况

解决方法不算完美,后续方法还再挖掘中

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇