CSS绝对定位:向右偏移15%+22px应该怎样写?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CSS绝对定位:向右偏移15%+22px应该怎样写?相关的知识,希望对你有一定的参考价值。

CSS是能实现的,不过有点麻烦。大概是这么实现:

    html中为需要“向右偏移15%+22px”的div加上两个辅助定位的div:

<div id="outer">
    <div id="theMiddel">
        <div id="div"></div>   <!-- 目的:此div向偏移15%+22px -->
    </div>
</div>

2. 在CSS中,首先使最外层的<div id="outer">使用相对定位position:relative,占据15%的父元素的宽度(即width: 15%),高度与目标<div id="div">一样;

3. 在CSS中,使以下两个div

<div id="theMiddel">
    <div id="div"></div>   <!-- 目的:此div向偏移15%+22px -->
</div>

假设目标<div id="div">的宽度是50px。

<div id="theMiddel">使用绝对定位,定位到最上边最右边,这时候目标<div id="div">的位置就是:向右偏移15%减去目标<div id="div">的宽度(15% - 50xp)。

4. 目标<div id="div">使用绝对定位,然后right: -(50 + 22)px。这就是向右偏移15%+22px。

以下代码详细实现

向右偏移15%+22px.html  文件代码清单如下:

<!doctype html>
<html langj="zh">
  <head>
    <meta charset="utf-8">
    <title>向右偏移15%+22px</title>
    <link rel="stylesheet" href="marginRight.css">
  </head>

  <body>
    <p>CSS绝对定位:向右偏移15%+22px</p>
    
    <div id="outer">
      <div id="theMiddel">
        <div id="div"></div>
      </div>
    </div>

  </body>
</html>

marginRight.css   文件代码清单如下:

#outer 
position: relative;
width: 15%;              /* 用宽度15%定位到15%位置 */
height: 50px;            /* 这行可以去掉,现在是为了看清偏移情况 */
background: rgb(220, 220, 220);/* 这行可以去掉,现在是为了看清偏移情况 */

#theMiddel                /* 中间部分使目标div移动到15%位置的最右边 */
position: absolute;
top: 0;
right: 0;

#div 
position: absolute;
right: -72px;       
/* 偏移量是:目标div的宽度加上22px。如果目标div宽度变化,这行自己相应变化 */
width: 50px;     
/* 目标div的宽度,自己设定,如果变化,上一行的负偏移量也要改变 */
height: 50px;
background: rgb(18, 48, 168);

参考技术A

CSS中只能使用百分比和px中的一种,用js可以实现。

<style type="text/css">
*margin:0;padding:0;
.div1width:800px;height:100px;border:1px solid #000;margin:50px auto;
.div2width:200px;height:80px;border:1px solid #F00;position:relative;
</style>
<script type="text/javascript" src="js/jq.js"></script><!--这里引入jQuery库-->
<script type="text/javascript">
$(function()
var ParDivWidth=$(".div1").width();//得到上一级div1的宽度
var DivWidth=ParDivWidth*0.15+22+'px';//计算出偏移值
$(".div2").css(left:DivWidth)//把偏移值给div2
);
</script>
<div class="div1">
    <div class="div2"></div>
</div>

参考技术B

这个只需要在left:15%的基础上,再加一个margin-left:22px就行,类似代码如下:

  这段代码是为了实现居中效果

参考技术C 定位一般都是用px 啦,
你可以直接用百分比,也可以用px, 尽量在布局的时候固定好位置,
用px定位就好了最方便了追问

就是在15%的基础上再向右平移22个像素。这样的CSS不能实现么?

追答

你为什么要这样的定位呢,如果你的页面是以百分比的,那就直接用百分比来定位,用像素就直接用像素来定位吧

参考技术D 没有这种写法,你可以写成15.5%或者具体到多少像素。
ps:你是奇葩啊追问

就是在15%的基础上再向右平移22个像素。这样的CSS不能实现么?

追答

那你先15%,然后加个。maigin—right:22px

追问

不可以啊。。

17 css定位

css定位
	定位是用来移动元素位置的。
	相对位置,参考元素原始位置,偏移某个距离
	绝对位置,参考点是最近的有定位的祖先元素,偏移某个距离
	
定位
1 css定位 相对定位  绝对定位  固定定位
   为什么
	  移动元素
      设置元素在包含块中出现的位置,以及遮盖

2 相对定位
     position: relative;
	 参考自己原来的位置,偏移某个距离

     * 用途
		1 做一些位置微调 
		2 配合绝对定位使用 

     * 相对定位的元素不脱标,它原本所占的空间仍保留

		top 正数向下  可以理解为:距离原来位置顶边框,距离是100个像素     
		left 正数向右   距离原来位置左边框,距离是100个像素    
		right 正数向左  距离原来位置右边框,距离是100个像素    
		bottom 正数向上  距离原来位置底边框,距离是100个像素    

		任意组合  从top、bottom选一个 left、right选一个

3 绝对定位
  	position: absolute
    * 绝对定位元素脱离标准文档流
		脱标的意思:元素框不在文档流中,与文档流无关了,不占用文档流的空间
    * 定位参考点
		相对于其包含块:绝对定位的元素,他的参考点相是最近的有定位的祖先元素。如果元素没有已定位的祖先元素,那么它的位置相对于最初的包含块
 
        c 祖先盒子做参考点
             子绝父相最常见的定位手段
             最近的有定位的祖先元素:最近的、(无论何种定位 相对可以 绝对也可以 固定定位都可以)、祖先元素做参考

   * 绝对定位的元素居中
      	 margin: 0 auto;  不管用 原因适合标准流中有宽度的块元素
   只能用margin-left,margin-right

   * 应用
       90%的压盖效果都是绝对定位做的           


4 固定定位
    position: fixed;
    * 固定定位元素也是脱标
    * 参考点: 浏览器的左上角

图片的垂直对齐方式
     vertical-align:text-top  跟文本顶部对齐
	 text-bottom 跟文本底部对齐

z-index属性
	1  作用: 负责谁压盖谁
		1、 定位的元素能够压住没有定位的( 默认情况)
		2、假如都定位了,html代码后面的盒子压住前面的

		div   没有定位
		div   绝对定位
		div   相对定位

	2   使用
      * z-index: 数字  数字大的压住数字小的 ,默认值是0,
      * z-index只适用于有定位的元素,标准流的元素不能写z-index,浮动的元素也不能写z-index 
			z-index:-1 可以使定位元素放在标准流元素的后面

      * 拼爹现象 见案例
               如果父元素都是定位元素,则比较父元素的z-index大小,值大的盖住值小的,
什么是拼爹现象

  

以上是关于CSS绝对定位:向右偏移15%+22px应该怎样写?的主要内容,如果未能解决你的问题,请参考以下文章

2020/5/22 JAVA HTML+CSS

详解CSS的相对定位和绝对定位

动画绝对定位的div,但如果条件为真则停止?

IE6/IE7下position:absolute;绝对定位偏移不显示问题

深入理解CSS定位中的偏移

绝对定位后怎样水平居中