引言
利用业余时间学习CSS断断续续快两周了,这篇文章主要是记录一下自己在写CSS
布局的一些技巧。
文字与图片对齐
我们经常要实现文字和小图片对齐,代码如下。
1 | <div> |
我们可以给span设置张小背景图,然后在设置margin和右边的文字对齐。但打开浏览器后,会发现给span设置margin,文字会和span一起走。
解决:
1 | div { |
span要设置宽高,又必须和文字在一行,所以需要转成行内块。由于行内块默认和文字的基线对齐,所以设置vertical-align与文字居中对齐,再设置margin就可以了。
网格布局边框切除
要实现的效果如下:
这里可以发现整个大格子左边框,右边框和底边框都没有。可以用下面取巧的方式实现:
1 | <div class="jd-service"> |
页面结构如上,ul
包着总共12个li
,每个li里面又包含着a
。
1 | .jd-service { |
CSS代码实现如上,首先给最外层的父盒子指定宽高。接着给每个li
指定宽高,指定右边线和底边线,全部向左浮动,这样就可以基本实现上面的格子布局了。但是,接着会发现,整个右边一排和底边一排的li
边线是会存在的。那么怎么让他们的右边线和底边线都去掉呢?
一个取巧的方法就是 li
的宽度是48(宽度+边线),那么也就是说一行的宽度最少是192。那么我们可以让整个大盒子宽度比这个值小1px,再设置overflow:hidden
,这样不就切掉右边框了,同理高度也是。但是如果直接给li
的父盒子指定这个值,必然导致一行不能放下4个li
。所以,做法就是给li
的父盒子指定大于或者等于这个总宽度192,保证一行能放4个,然后给最外层大盒子指定小于192的值191,再设置overflow:hidden
不就搞定了。
左图片右文字
首先结构如下:
1 | <div class="user-info"> |
实现这样的方法可以用下面的方法取巧实现。
1 | .user-info { |
给外面的盒子直接设置个paddingleft,把文字挤过来。然后左边的图片使用定位。
表单实现
1 | <form action="" method="get"> |
结构如上,使用div
+ dl
标签来实现。
1 | .box dl { |