CSS定位详解

本文深入探讨了CSS中的四种定位机制:普通流、绝对定位、相对定位和固定定位。普通流是默认的布局方式,元素按顺序排列。绝对定位脱离普通流,根据最近的定位父元素定位;相对定位则在普通流基础上偏移。固定定位则是相对于浏览器窗口定位,不会随滚动条移动。理解这些定位方式对于精确控制网页布局至关重要。
一、CSS定位机制

1.普通流
2.浮动定位
3.绝对定位
除非专门指定,否则所有框都在普通流中定位。普通流中的元素的位置由元素在 HTML 中的位置决定。
块级框从上到下一个接一个地排列
行内框在一行中水平布置
display
代码:

<body>
    <div class="box1">
        <h1>1</h1>
    </div>
    <div class="box2">
        <h1>2</h1>
    </div>
    <div class="box3">
        <h1>3</h1>
    </div>
    <span class="box4">
        4
    </span>
    <span class="box5">
        5
    </span>
    <span class="box6">
        6
    </span>
</body>
二、CSSposition属性

1.静态定位(static)
一般的标签元素不加任何定位属性都属于静态定位,在页面的最底层属于标准流。(普通流)
2.绝对定位(absolute)
(1)绝对定位的元素从文档流中拖出,使用left、right、top、bottom等属性相对于其最接近的一个最有定位设置的父级元素进行绝对定位,如果元素的父级没有设置定位属性,则依据 html 元素左上角作为参考进行定位。
(2)绝对定位元素可层叠,层叠顺序可通过 z-index 属性控制,z-index值为无单位的整数,大的在上面,可以有负值。
(3)absolute 定位使元素的位置与文档流无关,因此不占据空间。
absolute
代码:

<style>
        .box3{
            width: 100px;
            height: 100px;
            background-color: chocolate;
            position: absolute;
            top:50px;
            left: 50px;
            
        }
</style>
<body>
        <div class="box1">
            <h1>1</h1>
        </div>
        <div class="box2">
            <h1>2</h1>
        </div>
        <div class="box3">
            <h1>3</h1>
        </div>
        <div class="box4">
            <h1>4</h1>
        </div>
</body>

3.相对定位(relative)
(1)依据left、right、top、bottom等属性在正常文档流中偏移自身位置。
(2)可以用z-index分层设计。
(3)移动相对定位元素,但它原本所占的空间不会改变。(普通流)
(4)相对定位元素经常被用来作为绝对定位元素的容器块。
relative
代码(html同上):

.box3{
            width: 100px;
            height: 100px;
            background-color: chocolate;
            position: relative;
            top:50px;
            left: 50px;
            
        }

4.固定定位(fixed)
(1)固定定位与绝对定位类似,位置与文档流无关,因此不占据空间,可层叠。
(2)它是相对于浏览器窗口定位,并且不会随着滚动条进行滚动。(绝对定位)
5.粘性定位(sticky)
在 position:relative 与 position:fixed 定位之间切换,它的行为就像 position:relative; 而当页面滚动超出目标区域时,它的表现就像 position:fixed;,它会固定在目标位置。

### Selenium 使用 CSS 定位元素详解 #### 一、CSS选择器简介 CSS(层叠样式表)不仅用于定义网页样式的语言,还提供了一套强大的选择器机制。这些选择器可以精确匹配文档中的特定元素[^3]。 #### 二、Selenium 中的 CSS 定位方法 在 Selenium WebDriver API 中提供了 `find_element_by_css_selector()` 方法来依据给定的选择器字符串找到页面上的单个 Web 元素;对于多个相同条件下的节点,则有对应的复数形式 `find_elements_by_css_selector()` 可供调用[^1]。 #### 三、常见的 CSS 定位策略 ##### 1. ID 选择器 当目标 HTML 元素拥有独一无二的 id 属性时,可以通过如下方式快速定位该元素: ```python driver.find_element_by_css_selector('#uniqueId') ``` ##### 2. Class 类选择器 如果要选取具有某个 class 的所有元素,可采用下面的形式: ```python driver.find_element_by_css_selector('.className') ``` 注意这里的点号`.`表示这是一个类(class)名称而非其他类型的标识符。 ##### 3. 标签/元素选择器 直接指定想要操作的具体标签名即可获取相应类型的所有实例对象。例如为了得到所有的输入框控件,可以用此命令: ```python driver.find_element_by_css_selector('input').send_keys('hello selenium') # 向第一个符合条件的对象发送文本数据 ``` ##### 4. 属性选择器 除了基本的身份验证外,还可以基于属性及其值进一步缩小范围。比如寻找 name 属性等于 "q" 的 input 输入域: ```python driver.find_element_by_css_selector('[name="q"]') ``` ##### 5. 组合使用多种选择器 - 层级关系表达 有时仅靠单一维度难以准确定位到所需组件,这时就需要综合利用以上提到的各种手段构建更复杂的查询语句。考虑这样一个场景:在一个 div 下面找第二个 span 子孙里的第三个 a 链接: ```python driver.find_element_by_css_selector('div > span:nth-child(2) > a:nth-of-type(3)') ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值