网页元素定位Position

 第九章: 网页元素定位Position

position属性

  • static:默认值,没有定位
  • relative:相对定位
  • absolute:绝对定位
  • fixed:固定定位  (一般不用)

    static没有定位,以标准流方式显示

    relative设置相对定位的盒子会相对它原来的位置,通过指定偏移,到达新的位置。设置相对定位的盒子仍在标准流中,它对父级盒子和相邻的盒子都没有任何影响。

设置了position属性值为relative的网页元素,无论是在标准流中还是在浮动流中,都不会对它的父级元素和相邻元素有任何影响,它只针对自身原来的位置进行偏移。

     absolute属性值 偏移设置: left、right、top、bottom

     使用了绝对定位的元素以它最近的一个“已经定位”的“祖先元素” 为基准进行偏移。如果没有已经定位的祖先元素,那么会以浏览器窗口为基准进行定位。

     绝对定位的元素从标准文档流中脱离,这意味着它们对其他元素的定位不会造成影响。

z-index属性

     调整元素定位时重叠层的上下位置 z-index属性值:整数,默认值为0 设置了positon属性时,z-index属性可以设置各元素之间的重叠高低关系。 z-index值大的层位于其值小的层上方

     网页中的元素都含有两个堆叠层级,一个是未设置绝对定位时所处的环境,此时z-index是0;另一个是设置绝对定位时所处的堆叠环境,此时层的位置由z-index的值确定。

    改变设置绝对定位和没有设置绝对定位的层的上下堆叠顺序,只需调整绝对定位层的z-index值即可。

    使用opacity:x或filter:alpha(opacity=x)方式设定网页元素的透明度。

练习:

//相对定位
<style type="text/css">
.box1,.box2,.box3{ width:100px; height:50px; border:#000 solid 1px;}
.box2{ position:relative; top:20px; left:35px;}
</style>
<body>
<div class="box1">box1</div>
<div class="box2">box2</div>
<div class="box3">box3</div>
</body>

//<title>绝对定位</title>
<style type="text/css">
.box1,.box2,.box3{ width:100px; height:50px; border:#000 solid 1px;}
.box2{ position:absolute; top:20px; left:40px;}
</style>
<body>
<div class="box1">box1</div>
<div class="box2">box2</div>
<div class="box3">box3</div>
</body>

//z-index对比
<style type="text/css">
*{ margin:0; padding:0;}
.main{ width:200px; height:170px; position:relative; border:#000 solid 2px;}
.box1{ width:100px; height:100px; background:#F00; position:absolute; top:20px; left:20px;}
.box2{ width:100px; height:100px; background:#0F0; position:absolute; top:40px; left:40px;}
.box3{ width:100px; height:100px; background:#00F; position:absolute; top:60px; left:60px;}
</style>
<body>
<div class="main">
    <div class="box1"></div>
    <div class="box2"></div>
    <div class="box3"></div>
</div>
</body>

// z-index对比
<style type="text/css">
*{ margin:0; padding:0;}
.main{ width:200px; height:170px; position:relative; border:#000 solid 2px;}
.box1{ width:100px; height:100px; background:#F00; position:absolute; top:20px; left:20px; z-index:1;}
.box2{ width:100px; height:100px; background:#0F0; position:absolute; top:40px; left:40px;}
.box3{ width:100px; height:100px; background:#00F; position:absolute; top:60px; left:60px;}
</style>
<body>
<div class="main">
    <div class="box1"></div>
    <div class="box2"></div>
    <div class="box3"></div>
</div>
</body>

  

 

转载于:https://www.cnblogs.com/cyjy/p/6095903.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Playwright是一个开源的Node.js库,用于自动化现代Web浏览器(Chromium, Firefox, WebKit)。如果你想使用Playwright来自动化测试,并将元素定位信息保存到YAML文件中,你可以按照以下步骤操作: 1. 安装Playwright:首先确保你已经安装了Node.js,然后通过npm或yarn安装Playwright: ```bash npm install playwright # 或者 yarn add playwright ``` 2. 编写测试脚本:创建一个Node.js文件,使用Playwright的API定位元素并获取其属性。例如,获取元素的位置(如`client.page.locator('selector').position()`)。 ```javascript const { playwright } = require('playwright'); (async () => { const browser = await playwright.chromium.launch(); const page = await browser.newPage(); // 使用选择器定位元素 const element = await page.locator('#some-element'); const position = await element.position(); // 保存元素位置到变量 const yamlData = { selector: element.toString(), x: position.x, y: position.y, }; // 你可以选择将数据写入YAML文件,这里假设有一个`writeToYaml`函数 await writeToYaml(yamlData, 'element_positions.yaml'); await browser.close(); })(); ``` 3. 实现YAML写入:创建一个辅助函数,如`writeToYaml`,使用`@yaml-tools/json-schema`这样的库将JavaScript对象序列化为YAML格式: ```javascript const YAML = require('yaml-tools'); const fs = require('fs'); async function writeToYaml(data, fileName) { try { const yamlString = YAML.stringify(data); fs.writeFileSync(fileName, yamlString); console.log(`Element positions saved to ${fileName}`); } catch (error) { console.error('Error writing to YAML file:', error); } } ``` 4. 运行测试:运行你的Node.js脚本,它会自动定位元素并将其位置写入指定的YAML文件。 注意:这个示例假设你已经有了一个具有所需元素网页和一个有效的选择器。在实际应用中,你需要根据你的具体网页结构调整选择器。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值