CSS “点”“井号”的含义and ID class区别?

本文详细解释了CSS中Class与ID的区别以及Margin与Padding的应用场景。Class适用于多次复用的样式,而ID则针对唯一元素。此外,文章还介绍了Margin用于元素间的距离设置,Padding则应用于元素内部的内容间隔。

body{
       font-family: Arial,sans-serif;
       color: #333333;
       line-height: 1.166;       
       margin: 0px;
       padding: 0px;
}

#masthead{
       margin: 0;
       padding: 10px 0px;
       border-bottom: 1px solid #cccccc;
       width: 100%;
}

.feature img{
       float: left;
       padding: 0px 10px 0px 0px;
       margin: 0 5px 5px 0;

#对应id
.对应class
不加对应html 标签
1.Class与ID的区别
  
  一个Class是用来根据用户定义的标准对一个或多个元素进行定义的。打个比较恰当的比方就是剧本:一个Class可以定义剧本中每个人物的故事线,你可以通过CSS,Javascript等来使用这个类。因此你可以在一个页面上使用class="Frodo" ,class="Gandalf",class="Aragorn"来区分不同的故事线。还有一点非常重要的是你可以在一个文档中使用任意次数的Class。
  
  至于ID,通常用于定义页面上一个仅出现一次的标记。在对页面排版进行结构化布局时(比如说通常一个页面都是由一个页眉,一个报头,一个内容区域和一个页脚等组成),一般使用ID比较理想,因为一个ID在一个文档中只能被使用一次。而这些元素在同一页面中很少会出现大于一次的情况。
  
  归纳成一句话就是:Class可以反复使用而ID在一个页面中仅能被使用一次。有可能在很大部分浏览器中反复使用同一个ID不会出现问题,但在标准上这绝对是错误的使用,而且很可能导致某些浏览器的现实问题。
  
  在实际应用的时候,Class可能对文字的排版等比较有用,而ID则对宏观布局和设计放置各种元素较有用。
  
  2.Margin与Padding的区别
  
  两者都是代替表格最重要的作用->分割块的好方法,区别在于Margin是不同的Tag间互相隔离的距离而Padding是同一元素中不同内容分割使用,这在表格中最看得清楚。尤其是当对一个区域加载了背景样式之后,Padding下的内容背景色会发生改变,而Margin则不会有所改变。
在自动化测试中,id定位、CSS定位和XPath定位存在以下区别: ### 语法与表示形式 - **id定位**:使用元素的唯一标识符进行定位,语法简洁,通过`#`加元素的id值来定位元素。例如,定位id为`kw`的元素,语法为`#kw` [^5]。 - **CSS定位**:语法形式多样,可以根据id、类、标签、属性等进行定位。通过id定位时用`#ID`;通过类定位时用`.class`;通过元素属性定位时,如`input[autocomplete="off"]`;通过部分属性定位时,如`input[autocomplete*="of"]`等 [^3]。 - **XPath定位**:可通过绝对路径、相对路径、元素属性、部分元素属性、元素文本等进行定位。绝对路径从文档根节开始,如完整的HTML层级路径;相对路径以`//`开头,如`//form/span/input`;通过元素属性定位,如`//input[@autocomplete="off" and @class="s_ipt"]`;通过部分元素属性定位,如`//input[contains(@autocomplete="of")]`;通过元素文本定位,如`//a[text()="新闻"]` [^3]。 ### 定位准确性与灵活性 - **id定位**:准确性高,因为id在页面中通常是唯一的,能快速精准定位到目标元素。但灵活性较差,如果页面元素的id发生变化,定位就会失效。 - **CSS定位**:具有一定的准确性,当使用id或唯一的类名定位时能准确找到元素。同时灵活性较好,可根据元素的不同属性组合进行定位,还能通过层级关系定位子元素,如`div#s-top-left a:nth-child(3)` [^3]。 - **XPath定位**:灵活性最强,可以从多个维度进行定位,无论是元素的属性、文本内容,还是元素在文档树中的位置,都能进行定位。在复杂的页面结构中,能通过相对路径和各种条件组合来定位到目标元素。不过,由于其语法相对复杂,定位效率可能会受到一定影响 [^3]。 ### 性能方面 - **id定位**:性能最优,因为浏览器可以直接根据id快速查找元素,无需遍历大量的DOM节。 - **CSS定位**:性能较好,浏览器CSS选择器有一定的优化,能较快地定位到元素。尤其是使用简单的CSS选择器时,效率较高。 - **XPath定位**:性能相对较差,尤其是使用复杂的XPath表达式时,需要遍历DOM树来匹配元素,可能会消耗较多的时间和资源 [^2]。 ### 适用场景 - **id定位**:适用于页面元素id稳定且唯一的场景,能快速定位到目标元素,提高测试效率。 - **CSS定位**:适用于需要根据元素的类名、属性等进行定位的场景,同时也适用于定位子元素的情况。 - **XPath定位**:适用于页面结构复杂,无法通过简单的idCSS选择器定位的场景,如需要根据元素文本内容或复杂的层级关系进行定位 [^3]。 ### 代码示例 ```python from selenium import webdriver from selenium.webdriver.common.by import By driver = webdriver.Chrome() driver.get("https://www.example.com") # id定位 id_element = driver.find_element(By.ID, "element_id") # CSS定位 css_element = driver.find_element(By.CSS_SELECTOR, "input[autocomplete='off']") # XPath定位 xpath_element = driver.find_element(By.XPATH, "//a[text()='新闻']") ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值