前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【CSS3】CSS3 2D 转换 - translate 平移 ( transform: translate 样式 | 百分比移动相对于元素自身尺寸 | 百分比移动实现绝对定位的居中效果 )

【CSS3】CSS3 2D 转换 - translate 平移 ( transform: translate 样式 | 百分比移动相对于元素自身尺寸 | 百分比移动实现绝对定位的居中效果 )

作者头像
韩曙亮
发布2023-04-24 11:32:28
6270
发布2023-04-24 11:32:28
举报

一、CSS3 2D 转换 - 平移 / 旋转 / 缩放


CSS3 中的 Transform 转换 , 可以实现 标签元素 的 位移 / 旋转 / 缩放 ;

CSS3 转换的 二维坐标系如下 : 该坐标系是 界面开发的 常用坐标系样式 ;

在这里插入图片描述
在这里插入图片描述

二、CSS 2D 转换 - Translate 移动


在网页中将 标签元素 沿着 x 轴 和 y 轴 各自移动指定的长度 , 就是 2D 转换中的移动操作 ;

CSS 2D 转换 - Translate 移动 语法如下 : 为 标签元素 设置如下属性值 , 即可实现移动 ;

  • x 轴移动语法 : transform: translateX(x);
  • y 轴移动语法 : transform: translateY(y);
  • x / y 轴移动语法 : transform: translate(x, y);

Translate 移动 语法 : 上述 transform: translate 中可以传入百分比值 , 百分比是相对于元素自身尺寸来说的 ;

代码语言:javascript
复制
	/* 水平方向 向右移动 元素自身宽度的 50% 距离
	   垂直方向 向下移动 元素自身高度的 50% 距离 */
	transform: translate(50%, 50%);

移动盒子模型位置的方法 :

  • 通过定位样式移动盒子 : 相对定位 relative 样式 , 绝对定位 absolute 样式 ;
  • 通过设置盒子外边距 : 外边距 margine 样式 ;
  • 2D 转换中的 Translate 移动 ; transform: translate() 样式 ;

Translate 移动 相对于其它方式 移动盒子模型 的优点 : 使用 Translate 移动标签元素 , 不会影响其它元素的位置 , 不会脱标 ;

Translate 只能移动块级元素 , 对于 行内元素 / 行内块元素 是无效的 ;

三、Translate 移动代码示例


1、基本示例

代码示例 :

代码语言:javascript
复制
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>CSS 2D转换-Translate 移动</title>
    <style>
        div {
            width: 100px;
            height: 100px;
            border: 1px solid red;
            background-color: pink;
            /* 水平方向向右移动 100 像素 */
            /* transform: translateX(100px); */
            /* 垂直方向向下移动 100 像素 */
            /* transform: translateY(100px); */
            /* 水平方向和垂直方向都移动 100 像素 */
            transform: translate(100px, 100px);
        }
    </style>
</head>

<body>
    <div></div>
</body>

</html>

执行结果 :

在这里插入图片描述
在这里插入图片描述

2、脱标测试 ( 百分比平移 )

两个标准流盒子放在一起 , 如果为前一个盒子设置 translate 移动 , 该盒子并不会脱标 , 而是继续占有现有位置 ;

后面的标准流盒子的位置并不会发生改变 ;

下面的 translate 中使用了百分比单位 , 该百分比是相对于标签元素自身的尺寸来说的 ;

代码示例 :

代码语言:javascript
复制
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>CSS 2D转换-Translate 移动</title>
    <style>
        div {
            width: 100px;
            height: 100px;
            background-color: pink;
        }
        
        div:first-child {
            /* 结构伪类选择器 选择 父容器中 第一个 div 标签 */
            transform: translate(50%, 50%);
        }
        
        div:last-child {
            /* 结构伪类选择器 选择 父容器中 最后一个 div 标签 */
            background-color: aquamarine;
        }
    </style>
</head>

<body>
    <div></div>
    <div></div>
</body>

</html>

执行结果 :

在这里插入图片描述
在这里插入图片描述

四、Translate 百分比移动实现绝对定位的居中效果


在之前使用 绝对定位 进行居中设置时 ,

  • 首先 , 走到父容器的一半位置 ;
  • 然后 , 再往回走子元素的一半距离 ;

此时就可以实现元素居中设置 ;

在设置 第二步 的时候 , 子元素需要往回走一半距离 , 可以使用 Translate 移动 50% 距离实现 ;

1、传统实现方式代码示例

传统实现方式代码示例 :

代码语言:javascript
复制
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Translate 百分比移动实现绝对定位的居中效果</title>
    <style>
        * {
            margin: 0;
            padding: 0;
        }
        
        div {
            /* 子绝父相 子元素绝对定位 本父容器设置相对定位 */
            position: relative;
            width: 200px;
            height: 200px;
            background-color: pink;
        }
        
        p {
            /* 子绝父相 子元素设置绝对定位 */
            position: absolute;
            left: 50%;
            top: 50%;
            width: 100px;
            height: 100px;
            background-color: red;
            /* 往回走子元素一半尺寸 */
            margin-top: -50px;
            margin-left: -50px;
        }
    </style>
</head>

<body>
    <div>
        <p></p>
    </div>
</body>

</html>

显示效果 :

在这里插入图片描述
在这里插入图片描述

2、百分比移动实现绝对定位的居中效果代码示例

代码示例 :

代码语言:javascript
复制
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Translate 百分比移动实现绝对定位的居中效果</title>
    <style>
        * {
            margin: 0;
            padding: 0;
        }
        
        div {
            /* 子绝父相 子元素绝对定位 本父容器设置相对定位 */
            position: relative;
            width: 200px;
            height: 200px;
            background-color: pink;
        }
        
        p {
            /* 子绝父相 子元素设置绝对定位 */
            position: absolute;
            left: 50%;
            top: 50%;
            width: 100px;
            height: 100px;
            background-color: red;
            /* 往回走子元素一半尺寸 */
            transform: translate(-50%, -50%);
        }
    </style>
</head>

<body>
    <div>
        <p></p>
    </div>
</body>

</html>

显示效果 :

在这里插入图片描述
在这里插入图片描述
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2023-04-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、CSS3 2D 转换 - 平移 / 旋转 / 缩放
  • 二、CSS 2D 转换 - Translate 移动
  • 三、Translate 移动代码示例
    • 1、基本示例
      • 2、脱标测试 ( 百分比平移 )
      • 四、Translate 百分比移动实现绝对定位的居中效果
        • 1、传统实现方式代码示例
          • 2、百分比移动实现绝对定位的居中效果代码示例
          相关产品与服务
          容器服务
          腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档