您的位置:

使用CSS的position属性掌握DIV盒模型

一、什么是DIV盒模型

CSS中的盒模型指的是HTML元素在页面中所占用的空间大小,由元素的内容、内边距、边框和外边距四个部分组成。其中,元素的宽度由内容和内边距的宽度之和计算得出,而元素的高度则由内容和内边距的高度之和计算得出。

比如下面这个DIV元素的盒模型:

  

其中,width指定了元素的宽度为200px,height指定了元素的高度为100px,padding指定了元素的内边距为10px,border指定了元素的边框为1px实线黑色边框,margin指定了元素的外边距为20px。

此时,这个DIV元素的实际宽度为222px(200px + 10px*2 + 1px*2),实际高度为142px(100px + 10px*2 + 1px*2 + 20px*2)。

二、使用position属性进行元素定位

除了通过width、height、padding、border和margin属性来控制元素的大小和间距之外,CSS还提供了position属性来控制元素的定位。position属性有5个取值:

  • static:默认值,元素按照正常流排列
  • relative:元素相对于自身原来的位置进行定位(此时top、right、bottom和left属性才会生效)
  • absolute:元素相对于父元素进行定位(如果没有父元素,则相对于最外层的HTML元素进行定位),脱离文档流(此时top、right、bottom和left属性才会生效)
  • fixed:元素相对于浏览器窗口进行定位,不会随着页面滚动而移动
  • sticky:元素根据滚动位置进行定位,滚动时会固定在指定位置,不滚动时会回到原来的位置

比如下面这个DIV元素的定位:

  
This is a positioned DIV element.

其中,position指定了元素的定位方式为relative,即相对于自身原来的位置进行定位;lefttop则分别指定了元素距离其原来位置向右和向下分别移动了50px。

三、使用position属性和z-index属性进行层叠

在HTML页面中,有时需要对元素进行层叠,比如有多个DIV元素重叠在一起,并且需要控制它们的显示顺序。这个时候,就可以使用position属性和z-index属性来实现。

z-index属性用于控制元素的堆叠顺序,取值为整数(负整数也可以),值越大的元素越靠近上面。比如下面这个例子:

  

其中,第一个DIV元素占据了整个页面,并且z-index值为2;第二个DIV元素重叠在第一个元素上方,并且z-index值为1。

四、使用position属性和transform属性进行变换

position属性还可以结合transform属性来实现元素的变换,比如旋转、缩放、平移等操作。transform属性有下面几个取值:

  • rotate(angle):元素旋转指定角度
  • scale(x,y):元素水平方向和垂直方向缩放指定比例
  • translate(x,y):元素水平方向和垂直方向移动指定距离
  • skew(x-angle, y-angle):元素水平方向和垂直方向倾斜指定角度

比如下面这个例子:

  

其中,transform: rotate(45deg);表示将元素顺时针旋转45度。

五、使用position属性和clip-path属性进行裁剪

另外,position属性还可以和clip-path属性进行结合,实现元素的裁剪。clip-path属性用于指定一个路径,元素只显示路径内部的部分,其余部分被裁剪掉。比如下面这个例子:

  

其中,clip-path: polygon(50% 0%, 100% 50%, 50% 100%, 0% 50%);表示将元素裁剪为一个菱形。

六、结语

通过以上几个例子,我们可以看到position属性在CSS中的重要性。它在定位、层叠、变换和裁剪等方面都发挥了重要作用,同时也为我们展示了CSS强大的设计能力。

使用CSS的position属性掌握DIV盒模型

2023-05-12
CSS布局:完全掌握position属性

一、position属性介绍 /** * 静态定位,元素默认属性,不受top,left,bottom,right影响 */ position: static; /** * 相对定位,相对于其正常位置定

2023-12-08
盒模型面试题解析

2023-05-17
掌握CSS高阶技巧,让你的网站脱颖而出

2023-05-12
CSS怪异盒模型详解

2023-05-22
探究CSS Object Position属性

2023-05-12
CSS 属性 - Position

2023-05-12
使用CSS box-sizing属性进行盒模型设置

2023-05-12
CSS中的样式表属性和使用方法

2023-05-12
优化盒模型的CSS属性,提高网页加载速度

2023-05-12
CSS属性参考文档-全面了解CSS的各种属性和用法 - 前端

2023-05-12
CSS display属性全面解析

2023-05-23
关于CSS中Position属性的应用

2023-05-12
如何使用CSS position属性来控制元素定位

2023-05-12
常用的CSS样式列表

2023-05-12
如何使用CSS中的位置属性进行页面定位

2023-05-12
CSS position属性的应用场景

2023-05-12
when-present<#else>when-missing. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)?? ---- ---- FTL stack trace ("~" means nesting-related): - Failed at: ${item.id} [in template "article/detail/index.ftl" at line 48, column 106] ---- Java stack trace (for programmers): ---- freemarker.core.InvalidReferenceException: [... Exception message was already printed; see it above ...] at freemarker.core.InvalidReferenceException.getInstance(InvalidReferenceException.java:134) at freemarker.core.EvalUtil.coerceModelToTextualCommon(EvalUtil.java:481) at freemarker.core.EvalUtil.coerceModelToStringOrMarkup(EvalUtil.java:401) at freemarker.core.EvalUtil.coerceModelToStringOrMarkup(EvalUtil.java:370) at freemarker.core.DollarVariable.calculateInterpolatedStringOrMarkup(DollarVariable.java:104) at freemarker.core.DollarVariable.accept(DollarVariable.java:63) at freemarker.core.Environment.visit(Environment.java:371) at freemarker.core.IteratorBlock$IterationContext.executedNestedContentForCollOrSeqListing(IteratorBlock.java:321) at freemarker.core.IteratorBlock$IterationContext.executeNestedContent(IteratorBlock.java:271) at freemarker.core.IteratorBlock$IterationContext.accept(IteratorBlock.java:244) at freemarker.core.Environment.visitIteratorBlock(Environment.java:645) at freemarker.core.IteratorBlock.acceptWithResult(IteratorBlock.java:108) at freemarker.core.IteratorBlock.accept(IteratorBlock.java:94) at freemarker.core.Environment.visit(Environment.java:335) at freemarker.core.Environment.visit(Environment.java:341) at freemarker.core.Environment.visit(Environment.java:341) at freemarker.core.Environment.process(Environment.java:314) at freemarker.template.Template.process(Template.java:383) at org.springframework.web.servlet.view.freemarker.FreeMarkerView.processTemplate(FreeMarkerView.java:332) at org.springframework.web.servlet.view.freemarker.FreeMarkerView.doRender(FreeMarkerView.java:266) at org.springframework.web.servlet.view.freemarker.FreeMarkerView.renderMergedTemplateModel(FreeMarkerView.java:220) at org.springframework.web.servlet.view.AbstractTemplateView.renderMergedOutputModel(AbstractTemplateView.java:181) at org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:314) at org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1431) at org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:1167) at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1106) at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:979) at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1014) at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:903) at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:564) at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:885) at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:658) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:205) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149) at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149) at com.software.filter.HttpSpiderIdentifyFilter.doFilter(HttpSpiderIdentifyFilter.java:51) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149) at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149) at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149) at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:167) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:90) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:482) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:115) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:93) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:340) at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:391) at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63) at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:896) at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1744) at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) at java.base/java.lang.VirtualThread.run(VirtualThread.java:309)