css使用border-image和flex布局设计一个随着文字多少自适应的标题

需求:

设计一个标题,让中间部分随着文字而撑大,同时文字渐变,两边自适应,这种情况就不能用传统的背景图片了,想到可以使用图片边框来做

解决思路: 

1.需要一个大盒子和三个小盒子

2.大盒子设置display:flex; 左右两个小盒子分别设置flex-grow; 并设置背景图片

3.给中间盒子设置边框图片(重点)关于边框图片可参考:CSS 边框图像 (w3school.com.cn)

上代码:

<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8">
	<meta name="viewport" content="width=device-width, initial-scale=1">
	<title>demo</title>
	<style type="text/css">
	body {
	background-image: url('background_main.png');
	background-position: center center;
	background-repeat: no-repeat;
	background-attachment: fixed;
	background-size: cover;
	}
	.left, .right {
	flex-grow: 1;
 	/* 背景图不平铺 */
 	background-repeat: no-repeat;
 	/* 当内容高度大于图片高度时,背景图像的位置相对于viewport固定 */
/* 	background-attachment: fixed;*/
 	/* 让背景图基于容器大小伸缩 */
 	background-size: 100% 90%;
 	/* 设置背景颜色,背景图加载过程中会显示背景色 */
	}
	.left {
	text-align: right;
	background-image: url('left.png');
	}
	.right {
	text-align: left;
	background-image: url("right.png");
	}
	.box {
	letter-spacing: -1px;
	font-weight: bold;
	color: #0072F0;
	font-size: 39px;
	background: linear-gradient(0deg, #69CCFF 0%, #FFFFFF 100%); // 文字渐变
	-webkit-background-clip:text; // 文字渐变
	-webkit-text-fill-color:transparent; // 文字渐变
	width: auto;
	display: inline-block;
	border: 10px solid; // 图片边框设置
	border-top: 0; // 图片边框设置,(注意:我的demo是不需要设置上边框的,所以添加了该属性,请大家自行选择)
	padding: 0 15px;
	border-image-source: url('background_head.png'); // 图片边框设置
	border-image-slice: 1 595 70 595 fill; // 图片边框设置 (注意:我的图片较大,请根据图片裁剪)
	border-image-width: 0 0 35; // 图片边框设置
	border-image-repeat: stretch; // 图片边框设置
	}
	</style>
</head>
<body style="background: #031F5E;">
	<!-- background: url('left.png') no-repeat center; -->
	<div style="width:100%; height: auto; text-align: center; display: flex;">
	<div class="left">
	</div>
	<div class="box">阿萨大大十大</div>
	<div class="right">
	</div>
	</div>
	
</body>
</html>

  

作者:狂扇赵四那半拉好嘴原文地址:https://www.cnblogs.com/leileig/p/17686710.html

%s 个评论

要回复文章请先登录注册