day08-定位&锚点

本文主要介绍了CSS定位的概念、使用条件及相关属性。定位可控制元素在浏览器中的位置,属性position有static、relative、absolute、fixed、sticky等属性值。详细阐述了各属性值的特点、作用,还对比了盒模型、浮动与定位属性的区别,最后提及层叠属性和CSS3计算属性。

<!--

    1.定位的概念:可以控制元素在浏览器中的位置

    2.生活中的定位

        - 把大象放进冰箱需要几步:打开冰箱、把大象放进去、关闭冰箱

        - 把单辉掉在投影仪上听课:绑起来、掉上去、嘲笑他

    3.关于定位使用的条件

        - 需要移动修饰的对象

        - 位置的移动方式

        - 参照物

    4.定位属性的使用 position

        - static 静态定位(默认值)

        - relative 相对定位

        - absolute 绝对定位

        - fixed 固定定位

        - sticky 粘性定位(css新增的定位属性值,兼容差)

 -->

    相对定位属性使用

    1.属性:position

    2.属性值:relative

    3.特点

        - 设置相对定位的时候需要给元素设置方向值(top/right/bottom/left)

        - 相对定位是相对于初始位置进行移动的

        - 总结盒模型和定位属性之间的区别

            - 相同点:可以控制元素在浏览器中进行移动

            - 不同点:盒模型设置的时候需要有父级包含框的接触,定位不需要没有方向的限制

        - 总结浮动和定位属性之间的区别

            - 相同点:可以控制元素在浏览器中进行移动

            - 不同点:浮动是脱离文档流的,相对定位是不脱离文档流的

    4.相对定位作用:是工具人,是为了给绝对定位提供参照物的

    绝对定位属性使用

    1.属性:position

    2.属性值:absolute

    3.特点

        - 绝对定位的参照物(父相子绝)

            - 当父级有定位属性的时候,子级就会相对于父级进行偏移

            - 当父级没有定位属性的时候,会往上级查找,直至找到浏览器

        - 绝对定位是会脱离文档流的,不占位置会破坏正常的网页布局

    拓展"流"的概念

    1.普通流/普通层/文档流:正常的网页布局

    2.浮动层/浮动流:在正常的网页上一层

    3.定位层/定位流:在浮动上一层

    固定定位属性使用

    1.属性:position

    2.属性值:fixed

    3.特点

        - 相对于浏览器的位置进行偏移的,是脱离文档流的

        - 作用:广告弹窗、聊天窗口、登录注册

    粘性定位属性使用

    1.属性:position

    2.属性值:sticky

    3.特点

        - 粘性定位是css中新增的属性值,兼容性比较差

        - 粘性定位是结合了相对定位个固定定位的特点

        - 相对定位:不脱离文档流

        - 固定定位:相对于浏览器进行移动

-->

<!--

    一:定位是可以控制元素在浏览器中移动位置

    二:属性position

    三:属性值及用法

    1.相对定位:relative 是相对于初始位置、不会脱离文档流

    2.绝对定位:absolute 是相对于父级(浏览器)进行移动、会脱离文档流

    3.固定定位:fixed 是相对有浏览器进行移动、会脱离文档流

    4.粘性定位:sticky 是相对于浏览器进行一定、不会脱离文档流

    需求:页面中有三个盒子,考虑让三个盒子叠加在一起?三个盒子排列的顺序是怎样的?

    解答:在定位中脱离文档流会出现在定位层,排列顺序的是从下到上,在后面的元素会显示在最上面

    层叠属性:z-index(使用的前提条件一定需要在定位环境下使用)

    属性值可以设置数字,数字越大越在上面显示

 -->

    1.已知元素宽高大小,设置元素在浏览器中间显示

    2.未知元素宽高大小,设置元素在浏览器中间显示

    拓展:CSS3中的计算属性

    用法:calc(计算公式) 相加相减的时候需要空格

&lt;think&gt;我们被要求分析一段用于生成日历的LaTeX代码,具体是以下片段: \begin{tikzpicture}[every day/.style={anchor=mid}] \calendar[ dates=#2-#1-01 to #2-#1-last, name=cal, day list downward, day xshift=3em, day yshift=2.2em, ] ; \end{tikzpicture} 这段代码是使用TikZ的calendar库来生成一个月的日历。下面我将逐步解释其含义和功能: ### 1. **TikZ环境** - `\begin{tikzpicture}[every day/.style={anchor=mid}]` 开启了TikZ绘图环境,并设置了一个样式`every day`,它将应用于日历中的每一天。`anchor=mid`表示每个日期节设置在中间,这样日期数字会居中显示。 ### 2. **calendar命令** - `\calendar`是TikZ日历库提供的命令,用于生成日历。 ### 3. **参数说明** - `dates=#2-#1-01 to #2-#1-last`:这是设置日历显示的日期范围。其中`#1`和`#2`是宏参数,分别代表月份和年份。例如,如果`#1`是3(三月),`#2`是2024,则日期范围从2024-03-01到2024-03-last(即该月的最后一天)。这样就会生成整个月的日历。 - `name=cal`:给这个日历命名,以便后续引用(例如,在绘制箭头或添加额外标记时可以通过此名称引用日历中的特定日期)。 - `day list downward`:设置日历的排列方式为向下排列。默认情况下,日历是从左到右、从上到下排列,而`day list downward`则使日期按列向下排列(即每周为一列,日期从上到下排列)。不过,在日历库中,`day list downward`实际上表示按行排列,每周一行,日期从左到右排列,但方向可以调整。实际上,`day list downward`通常与`week list`结合使用,但这里单独使用表示按天列表向下排列,但实际效果需要看上下文。在日历库中,`day list downward`表示日历矩阵的排列方式:每一周作为一个行(row),每一天在行内按列从左到右排列(周日至周六),并且周与周之间向下排列。所以这里表示正常的周历排列(每周一行,从上到下)。 - `day xshift=3em`:设置每一天在水平方向上的间距为3em。这个值控制同一周内相邻两天之间的水平距离。 - `day yshift=2.2em`:设置每一天在垂直方向上的间距为2.2em。这个值控制相邻两周之间的垂直距离。 ### 4. **功能总结** 这段代码的功能是生成一个指定月份(由参数`#1`和`#2`确定)的日历,日历以常见的表格形式展示(每周一行,从周日到周六)。每一天的日期数字居中显示(由`anchor=mid`保证)。通过调整`day xshift`和`day yshift`可以控制日历的紧凑程度。 ### 5. **在完整代码中的上下文** 在用户之前提供的完整日历代码中,这段TikZ代码被封装在一个命令`\monthcalendar`中,该命令有两个参数:月份和年份。然后通过循环调用这个命令来生成全年的日历(每行三个月)。 ### 6. **额外说明** 在完整代码中,在`\calendar`命令内部还添加了一些条件样式(如周末背景色和节日文字颜色),但在这个片段中没有体现。此外,还定义了星期栏(中文)和月份标题。 ### 相关问题: 1. 如何修改日历的排列方向(例如从右到左,或从上到下按列排列)? 2. 如何调整日历中每个格子的尺寸(比如固定宽高)? 3. 如何在日历的特定日期添加额外的标记或符号(比如圆圈、星号等)? 4. 如何改变日历中日期的格式(比如只显示数字,或者加上日期名称)? 请参考TikZ手册中关于calendar库的部分以获取更多信息[^1]。 &lt;/think&gt;以下是针对您分析的日历生成LaTeX代码的详细解释: ### 代码功能解析: ```latex \begin{tikzpicture}[every day/.style={anchor=mid}] \calendar[ dates=#2-#1-01 to #2-#1-last, % 日期范围设置 name=cal, % 日历命名 day list downward, % 日期排列方向 day xshift=3em, % 水平间距 day yshift=2.2em, % 垂直间距 ] ; \end{tikzpicture} ``` ### 核心参数详解: 1. **日期范围控制** `dates=#2-#1-01 to #2-#1-last` - `#2` 年份参数(如2024) - `#1` 月份参数(如3表示三月) - `01` 从当月1日开始 - `last` 自动计算当月最后一天 *示例:`dates=2024-03-01 to 2024-03-31`* 2. **排列方向设定** `day list downward` - 日期按**垂直方向**排列(默认每周一行) - 替代方案:`day list right`(水平排列)[^2] 3. **间距控制参数** ```latex day xshift=3em, % 日期单元格水平间距 day yshift=2.2em % 日期单元格垂直间距 ``` - `em`单位基于当前字体尺寸 - 增大值可扩展日历尺寸(如`day xshift=4em`) 4. **节定位** `every day/.style={anchor=mid}` - 强制每个日期数字**居中显示** - 替代定位:`anchor=north`(顶部对齐) ### 功能扩展技巧: 1. **添加日期标记**(在原代码基础上扩展): ```latex \calendar[...] if (Sunday) {\node[red]{\tikzdaytext};} % 周日红色 if (equals=05-01) {\node[draw,circle]{\tikzdaytext};} % 劳动节画圈 ; ``` 2. **调整日历样式**: ```latex % 在\begin{tikzpicture}后添加: \tikzset{ calendar/.style={ week list, % 按周分组 month label left vertical, % 月份标签左竖排[^2] } } ``` 3. **自定义日期内容**: ```latex \calendar[...] if (at most=2024-12-25) {\node{\color{green}\tikzdaytext};} % 圣诞前绿色日期 ; ``` ### 相关问题: 1. 如何在特定日期添加自定义标记(如会议图标)? 2. 怎样修改周末日期的背景填充颜色? 3. 能否实现跨月日历显示(如显示上月最后一周)? 4. 如何调整日历的整体字体大小和样式?[^1]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值