关于居中、子元素撑开父元素

1、实现父div宽高由内部元素撑开:

父div添加属性:overflow:hidden;

子元素定位时,无法撑开父元素,因为此时子元素已脱离文本流

2、解决子元素定位,父元素高度撑不开的问题

将父元素也设置成position:absolute;,假如子元素为position:absolute;

3、水平居中方法(单个居中同理):

方式一:定位+transform
	position:absolute;
	left:50%;
	top:50%;
	transform:translate(-50%,-50%);    移动元素自身高宽的一半,因为定位时元素有自身高宽

方式二:通过定位设置left:50%,再margin-left:-宽度的一半
	width:248px;
	position: absolute;
	left:50%;
	margin-left:-124px;
	
方式三:
	text-align:center;适用于子元素行内元素,或者转换为display:inline-block的元素

方式四:使用伪类,当使用line-height有误差时(即设置了font-size)
	.jf-badge-news::after {
	  content: " ";
	  display: inline-block;
	  width: 0;
	  height: 100%;
	  vertical-align: middle;
	  /* margin-top: 1px; */
	}

方式五:margin:auto;	适用于块级元素

4、垂直居中

方式一:垂直居中vertica-align:middle,适用于子元素为行内元素,在父元素加上font-size:0px和line-height:..;实现精准居中,否则会有偏差
	非图片在父元素上设置vertical-align:center;
	图片在自身上设置vertical-align:center;

方式二:利用行内元素基准线
	将要居中的图片后添加文字,父元素设置行高和父元素高相同,再设置font-size:0px,即可实现图片的垂直居中

方式三:
	使用margin计算盒子的上下边距,使其垂直居中
方式四:
	将盒子转换成display:table-cell,再vertical-align:middle;使盒子垂直居中
	vertical-align声明只会影响行内元素或者table-cell元素

5、垂直水平居中

方式一:弹性盒子

方式二:定位+margin/transform移动自身高宽50%

方式三:vertical-aligh+table-cell+margin
    .f{ 父div
      width: 400px;
      height: 400px;
      background-color: red;
      display: table-cell;
      vertical-align: middle;
      text-align: middle;
    }
    .c{子div
      width: 100px;
      height: 100px;
      background-color: orange;
      margin:auto;
    }
 
方式四:定位(absolute、fixed)+margin
	.f{
     width: 400px;
     height: 400px;
     background-color: red;
     position: relative;
   }
   .c{
     position: absolute;
     left: 0;
     right: 0;
     top: 0;
     bottom: 0;
     width: 100px;
     height: 100px;
     background-color: orange;
     margin:auto;
   }

方式五:flex+margin
大意是在flex格式化上下文中,设置了margin: auto的元素,在通过justify-content和align-self进行对齐之前,任何正处于空闲的空间都会分配到该方向的自动margin中去
.g-parent {
    width: 100vw;
    height: 100vh;
    
    display: flex;
	以下都行:
	display: flex;
    display: inline-flex;
    display: grid;
    display: inline-grid;
}

.g-child {
    width: 40vmin;
    height: 40vmin;
    background: #000;
    margin: auto;
}

方法六:绝对定位+负margin
.c{
  position: absolute;
  left: 50%;
  top: 50%;
  width: 100px;
  height: 100px;
  margin-left:-50px;
  nargin-top:-50px;
}

方式七:display: grid+place-items: center
.g-container {
   display: grid;
   place-items: center
}
  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值