css样式attr()获取元素属性值测试

    有时候,不想把样式设置太死,想灵活变化,可能会想到动态传值,这时候我们可以使用css的attr()方法,如下所示,根据传入的几个data-width我们分别设置像素px,百分比%,以及默认的百分比,和data-content作为内容填充。

代码如下:

<!doctype html>
<html>
      <head>
	      <style>
		      .root{
				 background: #ddd;
				 border-radius: attr(data-width px);
				 height: attr(data-width px);
				 width: attr(data-width px);
				 display: flex;
				 justify-content: center;
				 align-items: center;
			  }
			  .rect{
			     background: #c2ff77;
				 width: attr(data-width %);
				 --h : 50px;
				 height: var(--h);
			  }
			  .default{
			     background: #0088ff;
				 width: attr(data-width);
			  }
			  .content{
			     background: #ddd;
			  }
			  .content:before{
			     content: attr(data-content);
				 display: block;
				 color: red;
			  }
		  </style>
	  </head>
	  <body>
	       <div class="root" data-width="300" >attr(data-width px)</div>
		   
		   <div class="rect" data-width="30">attr(data-width%)</div>
		   
		   <div class="default" data-width="50%">attr(data-width)</div>
		   
		   <div class="content" data-content="before:content">before:content</div>
	  </body>
</html>

    展示的效果如下所示:

    可以看到,通过第一个attr(data-width px)的方式,设置像素,的确生效了。如果不生效,默认宽度是满屏100%

   查看元素样式, 我们注意观察attr()方法,默认data-width是一个带引号""的"300" ,当attr()方法使用过后,变为了300px

   生效的属性值是没有引号的。

    第二个效果是通过attr(data-width %)的方式,设置宽度百分比,同样生效了。

   查看元素样式, 我们注意观察attr()方法,默认data-width是一个带引号""的"30" ,当attr()方法使用过后,变为了30%

    同样的,生效的属性值30%是没有引号的。

    第三个效果,本来是想着,attr()拿来就直接用,不用再转化。结果没有生效。

查看元素样式,attr()方法前后,拿到的值都是"50%",是带引号的。

没有生效的属性值,是带引号的。

    我们再看看第四个作为伪类content填充的例子:

    因为是填充,所以这里是字符串最合适不过了。

    个人的理解,attr获取属性,默认传入数值类型,可能只认整型数字,不认百分比。可能"%"这个符号导致转化失败,只能认为它是字符串。如果是像素px反而还认识。

   这里传入"300 px" "30 px"通过attr()转化都成功了,但是"50 %"依旧转化失败。

    另外,如果把px连着写,传入那就真的都认为是字符串,转化失败。

    其他情况下的使用,默认都是没有问题的,因为属性值,除了数字类型,其他颜色值,定位,显示本身就是字符串。不涉及单位转换。

    

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

luffy5459

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值