div居中的问题_html/css_WEB-ITnose
div {
margin: auto;
position: absolute;
top: 0;
left: 0;
right: 0
bottom: 0;
width: 100px;
height: 100px;
border:1px solid red;
}
将产生一个div, width: 100px; height: 100px; 外边框 1px 红色实线 ;
div居于屏幕中间,对于居于中间这点,我无法理解,为何下面的做法不可以?
div {
margin: auto;
position: absolute;
top: 0;
left: 0;
width: 100px;
height: 100px;
border:1px solid red;
}
回复讨论(解决方案)
问题1
top: 0;
left: 0;
为何不可以代替
top: 0;
left: 0;
right: 0
bottom: 0;
问题2
margin:auto为何不可以代替
margin: auto;
top: 0;
left: 0;
right: 0
bottom: 0;
<html> <head> <style type="text/css"> div { margin: auto; position: absolute; right: 0; bottom: 0; top: 0; left: 0; width: 100px; height: 100px; border:1px solid red; } </style> </head> <body> <div></div> </body></html>
打开浏览器,改变浏览器的视区的大小,发现依然居中
因为该div设置了position为absolute,而且设置了置入值(left\right\top\bottom),根据元素包含块的定义,因为div的父级没有position为“absolute”、“relative”或者“fixed”的祖先元素,所以该div的包含块为初始包含块,即根元素html的包含块,我在控制台选中html标签的时候,可以看出整个视区都被选中,所以这个时候初始包含块就是视区
根据css2.1中‘top’ + ‘margin-top’ + ‘border-top-width’ + ‘padding-top’ + ‘height’ + ‘padding-bottom’ + ‘border-bottom-width’ + ‘margin-bottom’ + ‘bottom’ = 包含块的高度
设置margin的属性为auto恰好填充了空白
可以在控制台看出随着视区大小变化,margin的值随之变化
问题1:
如果只有left属性和top属性 那么margin属性为auto没有起到任何的作用
只有设置了left和right,或者top与bottom的时候,margin为auto的时候才会去填充左右或者上下的空白,达到left属性0,right属性为0,top属性为0,bottom属性为0 的效果,不然div只有100*100那么大,不可能达到left为0又right为0的效果啊!只有添加margin,增大在文档流的占用空间
问题2:
同理问题1,不设置置入值(left\right\top\bottom),这个时候margin属性为auto没有起到任何的作用
<html> <head> <style type="text/css"> div { margin: auto; position: absolute; right: 0; bottom: 0; top: 0; left: 0; width: 100px; height: 100px; border:1px solid red; } </style> </head> <body> <div></div> </body></html>
打开浏览器,改变浏览器的视区的大小,发现依然居中
因为该div设置了position为absolute,而且设置了置入值(left\right\top\bottom),根据元素包含块的定义,因为div的父级没有position为“absolute”、“relative”或者“fixed”的祖先元素,所以该div的包含块为初始包含块,即根元素html的包含块,我在控制台选中html标签的时候,可以看出整个视区都被选中,所以这个时候初始包含块就是视区
根据css2.1中‘top’ + ‘margin-top’ + ‘border-top-width’ + ‘padding-top’ + ‘height’ + ‘padding-bottom’ + ‘border-bottom-width’ + ‘margin-bottom’ + ‘bottom’ = 包含块的高度
设置margin的属性为auto恰好填充了空白
可以在控制台看出随着视区大小变化,margin的值随之变化
问题1:
如果只有left属性和top属性 那么margin属性为auto没有起到任何的作用
只有设置了left和right,或者top与bottom的时候,margin为auto的时候才会去填充左右或者上下的空白,达到left属性0,right属性为0,top属性为0,bottom属性为0 的效果,不然div只有100*100那么大,不可能达到left为0又right为0的效果啊!只有添加margin,增大在文档流的占用空间
问题2:
同理问题1,不设置置入值(left\right\top\bottom),这个时候margin属性为auto没有起到任何的作用
上面描述增大在文档流的占用空间不正确,position属性为absolute已经脱离了文档流,应该是增大该div的占用空间比较准确一点

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

WebDevelovermentReliesonHtml,CSS和JavaScript:1)HTMLStructuresContent,2)CSSStyleSIT和3)JavaScriptAddSstractivity,形成thebasisofmodernWebemodernWebExexperiences。

HTML、CSS和JavaScript在Web开发中的作用分别是:1.HTML定义网页结构,2.CSS控制网页样式,3.JavaScript添加动态行为。它们共同构建了现代网站的框架、美观和交互性。

HTML的未来趋势是语义化和Web组件,CSS的未来趋势是CSS-in-JS和CSSHoudini,JavaScript的未来趋势是WebAssembly和Serverless。1.HTML的语义化提高可访问性和SEO效果,Web组件提升开发效率但需注意浏览器兼容性。2.CSS-in-JS增强样式管理灵活性但可能增大文件体积,CSSHoudini允许直接操作CSS渲染。3.WebAssembly优化浏览器应用性能但学习曲线陡,Serverless简化开发但需优化冷启动问题。

HTML的未来充满了无限可能。1)新功能和标准将包括更多的语义化标签和WebComponents的普及。2)网页设计趋势将继续向响应式和无障碍设计发展。3)性能优化将通过响应式图片加载和延迟加载技术提升用户体验。

HTML、CSS和JavaScript在网页开发中的角色分别是:HTML负责内容结构,CSS负责样式,JavaScript负责动态行为。1.HTML通过标签定义网页结构和内容,确保语义化。2.CSS通过选择器和属性控制网页样式,使其美观易读。3.JavaScript通过脚本控制网页行为,实现动态和交互功能。

HTML是构建网页结构的基石。1.HTML定义内容结构和语义,使用、、等标签。2.提供语义化标记,如、、等,提升SEO效果。3.通过标签实现用户交互,需注意表单验证。4.使用、等高级元素结合JavaScript实现动态效果。5.常见错误包括标签未闭合和属性值未加引号,需使用验证工具。6.优化策略包括减少HTTP请求、压缩HTML、使用语义化标签等。

HTML的作用是通过标签和属性定义网页的结构和内容。1.HTML通过到、等标签组织内容,使其易于阅读和理解。2.使用语义化标签如、等增强可访问性和SEO。3.优化HTML代码可以提高网页加载速度和用户体验。

HTMLISNOTAPROGRAMMENGUAGE; ITISAMARKUMARKUPLAGUAGE.1)htmlStructures andFormatSwebContentusingtags.2)itworkswithcsssforstylingandjavascript for Interactivity,增强WebevebDevelopment。
