巧妙利用css选择器编写样式或者页面布局

2 篇文章 0 订阅

1、::before或者::after

::before选择器在被选元素的内容前面插入内容

::after选择器在被选元素的内容后面插入内容

以::before为例的两个小例子

//css部分
.result{
  position: relative;
  padding-left:10px;
}
.result::before{
  content:"";  //必须得有centent,否则内容无法展示出来
  position: absolute;
  top:0;
  left:0;
  height:100%;
  width:4px;
  background-color: #3680ff;
}
//html
<span class="result">今日总结</span>

效果图:

//css部分
label::before{
  content:"*";
  color:red;
}

//html部分
<label for="name">姓名</label>
<input type="text" name="name" required>

效果图:

2、:root和var

:root选择器用匹配文档的根元素;可以在:root里面声明css的全局变量,并使用var()函数来读取变量

css变量是在想要声明的变量名前加--

:root{
   background-color: snow;
   font-size:16px;
   --article-color:#3680ff;
   --p-color:lime;
   --basic-padding:15px 0;
   --base-font:18;
}
article{
  color:var(--article-color);
}
p{
   color:var(--p-color);
   padding:var(--basic-padding);
   font-size:calc(var(--base-font)*1px); /* 可以用calc()来拼接变量和字符串 */
}

效果图:

缺点:var()函数IE目前版本不支持

3、利用:checked选择器、+相邻兄弟选择器和~实现纯css实现选项卡切换效果

+相邻兄弟选择器:两者有相同的父元素,选择该元素后紧接着第一个的元素

~选择元素后面所有的这个元素都起效

//css部分
.wrap_tag{
   position: relative;
   display: flex;
}
.tag{
   width:10%;
   height:40px;
   margin-right:20px;
   line-height: 40px;
}
.tag>.label{
   text-align: center;
}
.tag input{
   border:none; /* 去掉默认样式 */
   outline: none; /* 去掉默认样式 */
   -moz-appearance:none;  /* 去掉默认样式 */
   -webkit-appearance:none; /* 去掉默认样式 */
   position: absolute;
   top:0;
   width:10%;
   height:40px;
   cursor: pointer;
}
.content{
   position: absolute;
   top:100px;
   left:0;
   width:100%;
   display: none;
}
.tag input:checked + .label{
   background-color:#49abff;
   color:white;
}
.tag input:checked ~ .content{
   display: block;
}

//html部分
<div class="wrap_tag">
   <div class="tag">
      <!-- input的name要一致,否则单选框单一选择失效 -->
      <input type="radio" name="nav" checked> 
      <div class="label">首页</div> 
      <div class="content">首页页面</div>
   </div>
   <div class="tag">
       <input type="radio" name="nav">
       <div class="label">旅游景点</div> 
       <div class="content">旅游景点页面</div>
    </div>
    <div class="tag">
        <input type="radio" name="nav">
        <div class="label">酒店推荐</div>
        <div class="content">酒店推荐页面</div>
    </div>
    <div class="tag">
         <input type="radio" name="nav">
         <div class="label">个人信息</div>
         <div class="content">个人信息页面</div>
     </div>
</div>

效果图如下:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值