CSS滑动门

引入

我们在制作网页时,为了美观常常需要为网页元素设置特殊的背景,如下微信导航栏
在这里插入图片描述
文字的背景肯定是以图片的方式实现的,这里最关键的问题就是,字数不一样如何显示?如果直接插入一张背景图,对应不同的字数显示就不正常了,那么他是如何使背景图适应文字呢?这里就用到了【滑动门】

为了使用各种特殊形状的背景都能够自适应元素文本内容的多少,出现了css滑动门技术,它从新的角度构建页面,使各种特殊形状背景都能够自动拉伸滑动,以适用元素内部的文本内容,可用性更强。

其核心技术就是利用类似CSS精灵设置背景位置和盒子的padding撑开宽度,以便适用不同字数的导航栏。

一般常用的布局如下

<li>
     <a href="#">
         <span>导航栏一</span>
     </a>
</li>

a标签通过类似CSS精灵方式设置左边背景,span设置右边背景,两个标签只要背景两边的区域如图
a设置padding把内容撑开
span也设置padding把内容撑开
初使化宽度大概是这样
CSS滑动门_第1张图片
将他们和到一起,因为a包含span,只要我们给span设置添加了内容,背景就会自动撑开
如图

假设两个字的宽度
CSS滑动门_第2张图片
当四个宽度时
CSS滑动门_第3张图片
这样就完成了一个【滑动门】,随宽度而拉伸。

验证微信官方是否是使用了【滑动门】

CSS滑动门_第4张图片
和我们上面的画图一样,左侧采用了a标签,右侧span标签,他这里做的有点瑕疵,但也更能看出来使用了滑动门

随便点击一个栏目 审查元素----微信导航栏
CSS滑动门_第5张图片
是一张完整的背景图

接下来我们用代码实现它。

<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8">
	<title>滑动门效果</title>
	<style type="text/css">
		li{
			list-style: none;
		}
		a {
			height:33px;
			display: inline-block;
			background:url(1.png) no-repeat;
			/*因为不能设置宽度
			这里我们用padding代替设置最小显示宽度
			*/
			padding-left:15px;
		}
		span {
			height:33px;
			display: inline-block;
			background:url('1.png') no-repeat right ;
			//设置背景右对齐,拿到最右边的区域
			padding-right: 15px;
		}

	</style>
</head>
<body>
<ul>
	<li>
		<a href="">
			<span></span>
		</a>
	</li>
</ul>

</body>
</html>

显示效果
CSS滑动门_第6张图片
到此【滑动门】已经做好了,我们可以随意向span添加文字
CSS滑动门_第7张图片

你可能感兴趣的:(html5&css3)