html和css常见的一些问题总结
html 标签
一般在html有块级元素和行级元素,主要的块级元素有
div,p,h1-h6,ul,ol,li,dl,dt,dd,table,tr,th,td,有好记的办法,div,p,显示标题的,列表,表格,定义列表相关的
行内元素,也称行级元素,主要有a,span,em,i,strong,input,img,label,select,textarea等
一般块级元素会独占一行,而行内元素不会,行内元素会挤在一行,直到一行排满,针对行内元素和会级元素,主要在后面布局用到的是,可以将一些行内元素的display属性变成block,display:block;,也可以使用dispaly:inline-block属性,在这里顺便提一下block,inline-block,inline,的区别。对设置了display:block;的标签,你可以设置width,height,margin,padding,这些都会起作用,而对于display:inline;的标签,你在css里设置的width,height,margin-top,margin-bottom,padding-top,padding-bottom是没有用的(margin-left,margin-right,padding-left,padding-right是有效的),这里有一个疑问??padding的所有属性都在起作用,margin的top和bottom确实不起作用,代码是这样的:
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8">
<title>test</title>
<style type="text/css">
.p{width: 200px; height:100px; background-color: #233; margin: 10px; padding:10px; }
.s {width:50px; background-color: #c2c; height:50px; margin: 10px; padding:10px;}
</style></head>
<body><div class="p"><span class="s">son</span></div>
</body>
</html>
和定位相关的一些认识
常用的与定位相关的有float,static,relative,absolute,fixed,记得刚开始学习的时候一直搞不清楚relative和absolute,之前一直在滥用float,现在情况少一些,static是默认的,一个一个说吧。
relative,当把position设定为position:relative时,我们一般还会用到left,top,right,bottom这几个属性,还是用上边那个列子。这里父级div相对于自己原来的位置向左,向下移动10px,坐标轴以左上角为原点,向右为x轴,向下为y轴,你还可以设置left,top的值为负值,relative是相对于自身而言,不会脱离文档流,一般要定位先要将父级设置为relative。
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8">
<title>test</title>
<style type="text/css">
.p{width: 200px; height:100px; background-color: #ccc; position: relative; left: 10px; top:10px;}
.s {width:50px; background-color: #dedede; height:50px; margin: 10px; padding:10px;}
</style></head>
<body><div class="p"><span class="s">son</span></div>
</body>
</html>absolute,首先你得找一个父级作为参照,并将父级设置为relative,假如不这样设定的话,都是以body作参照,下面还是举个列子。可以看到,sibling跑到前面去了,说明position:absolute;是脱离文档流的,与float有点类似,这里你可能会有疑问,为什么sibling的有些部分会被覆盖,这是因为son设置为position:absolute,(他的z-index有默认属性吧!)个人猜测,要想将sibling放到son上面,你可以给sibling设置也为position:absolute,z-index:[number],number比son的大即可。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>test</title>
<style type="text/css">
.p{width: 200px; height:100px; background-color: #ccc; position: relative; }
.s {width:50px; background-color: #dedede; height:50px; position: absolute; top:10px; left:20px; }
.si {width: 50px; height:50px; background-color: #f00; }
</style>
</head>
<body>
<div class="p">
<div class="s">son</div>
<div class="si">sibling</div>
</div>
</body>
</html>
3.fixed,以浏览器窗口为参照,固定位置不动,具体自己可以动手操作试试。
4.至于说float,float:left,float:right,float属性是脱离文档流的,这个估计也是我们刚开始用得最多的,最方便的一个,同时也会给我们带来许多问题,
<body>
<div class="p">
<div class="s">son</div>
<div class="si">sibling</div>
</div>
</body>
<style type="text/css">
.p{width: 200px; height:100px; background-color: #ccc; }
.s {width:50px; background-color: #dedede; height:50px; float: left; }
.si {width: 100px; height:50px; background-color: #f00; }
</style>
这一次你会发现与前面的position:absolute,有相同的地方,都是.son覆盖sibling,不同的是,float里文字被挤出来,这也是之前主要是用来做文字环绕效果有关。关于定位的内容还有很多,这里不一一细说。
关于清除浮动的问题
初学阶段,我们一定会遇到清除浮动的问题,这是在写页面里一定会碰到的问题,关于清除浮动的问题,网上也是一搜一大把,下面我自己先归纳一下吧!还是先来一个列子。
<body>
<div class="p">
<div class="s1">son1</div>
<div class="s2">son2</div>
</div>
</body>
<style type="text/css">
.p {border:2px solid #f00;}
.s1 {float: left; width:50px; height:100px; background-color: #a11; }
.s2 {float: left; width:50px; height:150px; background-color: #ccc; margin-left:20px; }
</style>
首先我们会碰到,不能将父元素进行撑开,怎样才能解决呢?有好几种解决方法。下面我列举几种常见的解决办法。
方法一:使用空标签<div class="clearfix"></div> .clearfix{clear:both;},在包裹的元素里添加这个空标签。
<body>
<div class="p">
<div class="s1">son1</div>
<div class="s2">son2</div>
<div class="clearfix"></div>
</div>
</body>
优点:简单,代码少,浏览器兼容性好。缺点:需要添加大量无语义的html元素,代码不够优雅,后期不容易维护。
方法二:使用CSS的overflow属性,这个的原理主要是运用BFC(块级格式化上下文),今天刚看到,BFC(浮动、绝对定位元素(position 为 absolute 或 fixed)、行内块元素 display:inline-block、表格单元格 display:table-cell、表格标题 display:table-caption 以及 overflow 属性值不为 visible 的元素(除了该值被传播到视点 viewport 的情况)将创建一个新的块级格式化上下文。)我们对父元素使用overflow:hidden;也可以达到效果。效果和之前的一模一样。
方法三:可能是使用的最广,最高大上的一种方法,使用:after伪类,实现原理应该就是在clearfix后面的伪类添加内容, 设置了clear:both样式。为了IE6-7兼容性,还要添加一条样式,来触发haslayout()事件,写法:
.clearfix:after {clear: both; content: ".";height:0; visibility: hidden; display: block;}
.clearfix { zoom: 1; /*触发 haslayout*/ }
这三种方法基本能帮我们解决这一类问题,其中第三种用得最广泛。
居中问题
1.水平居中: 在父元素添加样式,要注意的是要给父元素一个宽度 {margin:0 auto;}
2.垂直居中: 这有一个比较详细的博客详解垂直居中,专业讲解各种居中
3.水平和垂直居中,不定宽高和定宽高两种方式,宽高固定这一种比较简单,直接上代码
①:{width: 200px; height: 200px; position: absolute; top:50%; left: 50%; margin-top:-100px;/*-height/2*/ margin-left:-100px;/*-width/2*/ }
②:{ position: absolute; left: 50%; top: 50%; transform: translate(-50%,-50%);}
③:{display: flex; justify-content: center; align-items: center; border: 2px solid #f22;}
暂时就总结这一些。。。
本文转载于:猿2048➫https://www.mk2048.com/blog/blog.php?id=hii1ckhcbaa
html和css常见的一些问题总结的更多相关文章
- IE6的那些css常见bug(汇总)
IE6的那些css常见bug(汇总) 我的微博终于在前几天建立了 虽说很早之前就知道博客园这个地方 但怕自己不能坚持去写一些东西一直没有建.这几天 我做了这个决定 把我的博客建起来 每周发一些看到的, ...
- css常见布局方式
CSS常见布局方式 以下总结一下CSS中常见的布局方式.本人才疏学浅,如有错误,请留言指出. 如需转载,请注明出处:CSS常见布局方式 目录: 使用BFC隐藏属性 float + margin abs ...
- css常见属性
css常见属性 1.颜色属性 1.1 color属性定义文本的颜色 1.2 color:green 1.3 color:#ff6600 可简写为#f60 1.4 color:rgb(255,255,2 ...
- CSS常见布局问题整理
实现div的水平居中和垂直居中 多元素水平居中 实现栅格化布局 1. 实现div的水平居中和垂直居中 实现效果: 这大概是最经典的一个题目了,所以放在第一个. 方法有好多, 一一列来 主要思路其实就是 ...
- CSS 常见的8种选择器 和 文本溢出问题
<!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title>c ...
- CSS基础【2】:CSS常见属性
CSS常见属性 文字属性 font-style 作用:规定文字样式 格式:font-style: italic; 取值: normal:正常的,默认就是正常的 italic:倾斜的 font-weig ...
- css CSS常见布局解决方案
CSS常见布局解决方案说起css布局,那么一定得聊聊盒模型,清除浮动,position,display什么的,但本篇本不是讲这些基础知识的,而是给出各种布局的解决方案.水平居中布局首先我们来看看水平居 ...
- IE6中CSS常见BUG全集及解决方案——摘自网友
IE6中CSS常见BUG全集及解决方案 IE6双倍边距bug 当页面内有多个连续浮动时,如本页的图标列表是采用左浮动,此时设置li的左侧margin值时,在最左侧呈现双倍情况.如外边距设置为10px, ...
- 前端进阶系列(二):css常见布局解决方案
水平居中布局 margin+定宽 <div class="parent"> <div class="child">Demo</di ...
- css常见的易混淆属性和值的区别(一)
css的属性很多,每一个属性的值也很多,组合起来便有成千上万种.不同属性之间的相互组合也可以产生不同的样式,css真是一种优美的样式设计语言.下面对工作中常见的易混淆的属性和值进行总结: 1. lin ...
随机推荐
- js websocket断线重连
js websocket断开重连实例代码,请根据自己需求做出相应改动Vue中使用websocket $(function() { var lockReconnect = false;//避免重复连接 ...
- 极速体验|使用 Erda 微服务观测接入 Jaeger Trace
在大型网站系统设计中,随着分布式架构,特别是微服务架构的流行,我们将系统解耦成更小的单元,通过不断的添加新的.小的模块或者重用已经有的模块来构建复杂的系统.随着模块的不断增多,一次请求可能会涉及到十几 ...
- netty搭建rpc框架
介绍 netty想必大家都不陌生,我就不废话介绍了...(主要是懒,网上资料很多的) 本文主要使用netty搭建rpc远程调用框架,实现了个注册中心微服务,整合了springboot例子... 开发内 ...
- elasticsearch的安装与使用
1:官网进行下载 https://www.elastic.co/cn/elasticsearch/ 2:这里我用的是7.15.2 3:进行下载解压至d 盘 4:接下来我们cmd 切换目录进行运行 5: ...
- laravel7 ajax H-ui框架添加数据至数据库
1:定义路由: //租房 Route::resource('house','fang\FangattrController'); 2:控制器访问前端框架: public function create ...
- 从零开始,开发一个 Web Office 套件(9):拖动鼠标选中文字 Edge Case
这是一个系列博客,最终目的是要做一个基于 HTML Canvas 的.类似于微软 Office 的 Web Office 套件(包括:文档.表格.幻灯片--等等). 博客园:<从零开始, 开发一 ...
- LGP6442题解
和SP13106是双倍经验哦 我们首先发现 \(m=20\),所以一言不合先状压. 然后发现状压了之后我们实际上要求的是有多少个子集按位或的值为全集,相当于求有多少个子集按位与的值为 \(0\).(把 ...
- CF1392F题解
首先题意很明显就不说了吧www 先说一下做这道题的经历 昨天下午和 blw 一起去食堂吃饭,和他产生了一点儿冲突,于是我考了一下他 P1119 (就是那道 Floyd),他很快做出来了,于是考了我这道 ...
- VTK数据拓扑结构、几何结构和属性数据
读取到VTK数据后,将数据组织起来并添加属性值. 示例: #include <vtkSmartPointer.h> #include <vtkPoints.h> #includ ...
- Python入门随记(4)
在涉及一些实际问题,会碰到概率论等相关领域的知识,自然少不了矩阵运算,以下是Python中关于矩阵的简单操作: 1.常用库numpy import numpy as np 2.随机生成矩阵 a=np. ...