一、css顺序

  首先声明,浏览器读取css的方式是从上到下的。我们一般书写css只要元素具备这些属性就会达到我们预期的效果,但是这会给以后的维护和浏览器的渲染效率带来一定的影响,那么该怎么书写css的顺序呢?有没有一定的规范呢?

  首先我们知道css的属性按特性分为几类;

  1.规定元素特性,如display、position、float,这些属性会决定他的排版方式

  2.规定元素的空间占据,如line-height、margin、padding、width、height等,这些属性会决定元素的大小和位置

  3.规定元素的自身效果,如font-size、color、background等,这些属性会决定元素的效果

  其实当我们把css的属性分类结束后,我们会得到一个很明显的答案,我们可以想象一下自己用css按照自己的书写顺序画出来该元素,举例说明

p.detail {
font-size: 10px;
line-height: 12px;
width: 30px;
height: 30px;
display: inline;
}

  描述:这是一个元素  字体大小10px 行高12px 宽度30px 高度30px  陈列方式为内联样式

  当我们开始读取属性的时候,我们会很难对元素进行定位,因为我们不知道元素的特性,陈列方式。读到最后一行的时候才发现,原来这是一个内联元素,宽度和高度的定义就会失效,所以这种css书写顺序是不被推荐的

p.detail {
display: inline-block;
margin-top: 20px;
width: 100%;
height: 20px;
color: #fff;
font-size: 10px;
}

  描述: 这是一个元素,陈列方式为内联-块方式,距上有20px 宽度与父元素等宽 高度为20px 颜色为白色 字体大小为10px

  这样的书写方式就能按照一个我们很容易理解的方式进行渲染

  总结: 我们书写css的时候推荐的规范是,先书写影响元素陈列特性的属性,再书写影响元素位置的属性,最后书写元素的内部属性

二、点击或hover等触发高亮情况的css书写

  当鼠标hover的时候,我们往往给需要改变的元素添加一个active类名,然后在active里面书写我们需要改变的属性

  如:

.content {
background: black;
}
.active {
background: white;
}

  当我们点击某元素的时候,需要.content的背景色从黑色变成白色,那么给.content添加active类名就会达到我们的预期效果,然而我们有的时候点击的时候不止要改变一个元素的属性,我们有可能会有这种情况

  我们需要在点击一个类名为.click的元素的时候,元素icon字体 和 span元素一个字体变大 一个变为红色怎么办,我们可以这样

<div class="parent">
<div class="icon-font"></div>
<span class="text"></span>
</div>
<div class="click"></div>
<style>
  .icon-active{
    font-size: 40px;
  }
  .text-active{
    color: red;
  }
</style>
<script src="jquery.js"></script>
<script>
  $(‘.click’).click(function() {
    $('.icon-font').addClass('icon-active');
    $('.text').addClass('text-active')
  })
</script>

  这样可以达到我们的预期效果,但是这是两个元素的关联反应,假如有三个元素或更多,我们会需要更多的代码,

  其实细心的朋友可能发现了我这里有一个.parent 标签,我们可以通过给.parent标签添加active类名代码如下:

<div class="parent">
<div class="icon-font"></div>
<span class="text"></span>
</div>
<div class="click"></div>
<style>
  .active .icon-font{
    font-size: 40px;
  }
  .active .text{
    color: red;
  }
</style>
<script src="jquery.js"></script>
<script>
  $(‘.click’).click(function() {
    $('.parent').addClass('active');
  })
</script>

  

  这样的话 我们只需要将会改变css元素的最相近的最外层添加active类名,然后设置该类名下后代元素的样式,这样我们只需要添加一个active类名就达到了我们预期的效果

一些css书写的小技巧的更多相关文章

  1. css的一些小技巧。修改input样式

    在第一次正式写项目的时候,遇到了几个布局的小技巧.记录一下. 我们常常会遇到图片和文字对齐的一种样式.比如 这样的样式,我们写的时候有时候会出现不对齐的情况.我们有俩种方法 一种就是flex的布局,还 ...

  2. 关于html/css的一些小技巧之hack掉"margin-top"层叠问题

    身为小前端菜鸟一枚,忽然听到这样一则传言~~ 心情久久不能平复,想到前几日,开通了博客君,特来此寻找存在feeling~ 旨在造福普罗大众(更多前端小菜鸟) 话不多说, 我们步入正题,今天来给大家分享 ...

  3. 从零开始学习html(十五)css样式设置小技巧——下

    六.垂直居中-父元素高度确定的单行文本 <!DOCTYPE HTML> <html> <head> <meta charset="utf-8&quo ...

  4. css浮动布局小技巧

    父元素如何围住浮动的子元素的三种办法: 一.为父元素应用overflow:hidden. overflow真正用途是防止包含元素被大的内容撑开,设定了宽度之后,包含元素将超过容器的内容减掉:而它还有另 ...

  5. CSS的一些小技巧

    1.黑白图像img.desaturate { filter: grayscale(100%); -webkit-filter: grayscale(100%); -moz-filter: graysc ...

  6. css的一些小技巧!页面视觉差!

    相当长的一段时间,现在网站与所谓的“视差”效果一直很受欢迎. 万一你没有听说过这种效果,不同的图像,在不同的方向移动或层主要包括.这导致了一个很好的光学效应,使参观者的注意. 在网页设计中,为了实现这 ...

  7. HTML+CSS学习笔记 (15) - css样式设置小技巧

    水平居中设置-行内元素 我们在实际工作中常会遇到需要设置水平居中场景,今天我们就来看看怎么设置水平居中的. 如果被设置元素为文本.图片等行内元素时,水平居中是通过给父元素设置 text-align:c ...

  8. HTML+CSS笔记 CSS中级 一些小技巧

    水平居中 行内元素的水平居中 </a></li> <li><a href="#">2</a></li> &l ...

  9. 从零开始学习html(十五)css样式设置小技巧——上

    一.水平居中设置-行内元素 <!DOCTYPE HTML> <html> <head> <meta charset="utf-8"> ...

随机推荐

  1. JavaScript知识点整理(一)

    JavaScript知识点(一)包括 数据类型.表达式和运算符.语句.对象.数组. 一.数据类型 1) js中6种数据类型:弱类型特性 5种原始类型:number(数字).string(字符串).bo ...

  2. keydown - > keypress - > keyup 用法和区别

    英文输入法:   事件触发顺序:keydown - > keypress - > keyup   中文输入法:   firfox:输入触发keydown,回车确认输入触发keyup chr ...

  3. 分享几个日常调试方法让js调试更简单

    下面分享几个日常调试代码的时候在Console命令行显示你的操作,让你的js调试更简单. console显示信息的命令 在浏览器按f12在console上显示你的文本. <!DOCTYPE ht ...

  4. SMD晶振发展和智能手机的普及总是惊人的相似!

    其实触屏手机在2002年前后就已经出现了,但那个时候的触屏手机不算是现在的这种智能手机,有人说最早发行触屏手机的是诺基亚,也有人说是苹果还有人认为摩托罗拉.总之众说纷纭,小编那里还太小也并不是很了解, ...

  5. Javascript版-显示相应图片的详细信息

    Hi All, 分享一个通过JS来显示相应图片的详细信息. 需求:进入页面时,动态加载图片信息:当鼠标移动到某一图片上时,则显示该图片的大图片并显示相应说明信息:当鼠标移开图片时,清除新创建的元素. ...

  6. 用户输入与while循环

    函数input()的工作原理: 函数input()让程序短暂运行,等待用户输入一些文本,获取用户输入后将其存储在一个变量中 测试input()功能-- #!/usr/bin/env python#fi ...

  7. JS Event事件流(冒泡机制、捕获机制、事件绑定)

    1.事件流 事件流:从页面中接收事件的顺序.也就是说当一个事件产生时,这个事件的传播过程,就是事件流. IE的事件流 IE中的事件流叫事件冒泡:事件冒泡:事件开始时由最具体的元素接收,然后逐级向上传播 ...

  8. NetFramework各个版本的特性笔记

    公式记忆: .Net 2.0=CLR+BCL+C#(VB.Net)+Win Form+Web Form .Net 3.0=.Net 2.0+WCF+WPF+WF+WCS .Net 3.5=.Net 3 ...

  9. Linux网络服务01——Linux网络基础设置

    Linux网络服务01--Linux网络基础设置 一.查看及测试网络 1.使用ifconfig命令查看网络接口 (1)查看活动的网络接口 ifconfig命令 [root@crushlinux ~]# ...

  10. TLS1.0和TLS1.1的区别

    TLS1.1是对TSL1.0的改进其中包括: 改进"抗抵赖"安全特性上的缺陷 完成协议对椭圆曲线的支持,提出了改进的支持ECC算法的传输层安全协议, 握手协议引入了数字签名及验证机 ...