【问题标题】:How to dynamically calculate the positioning width of a fixed div element using the width of browser and width of the body如何使用浏览器宽度和body宽度动态计算固定div元素的定位宽度
【发布时间】:2015-11-18 14:37:59
【问题描述】:

我正在为两个 div 使用以下 CSS 样式,这会将摩天大楼广告放置在我的网站上主体的左侧和右侧。

/*-----Sky Scraper ad----*/
#SkyAdLeft{
 width: 160px;
 display: block;
 position: fixed;
 top: 100px;
 left: 10px;
  height: 600px;
 z-index: 7;
}
#SkyAdRight{
 width: 160px;
  display: block;
 position: fixed;
 top: 100px;
 right: 10px;
 height: 600px;
 z-index: 7;
}

我希望每个 DIV 保持固定,但是我想动态计算左侧广告中的左侧位置和右侧广告中的右侧位置,以便能够位于身体左侧或右侧 10 像素。

由于我的身体始终为 980 像素并居中,因此我根据浏览器宽度计算出了执行此操作的数学方法。我的广告宽度为 160 像素。

左侧广告的宽度计算:

(浏览器宽度 - 980) / 2 = X

(浏览器宽度 - (160 + X + 980)) -10

右侧广告的宽度计算:

(浏览器宽度 - 980) / 2 = X

(浏览器宽度 - X)+10

计算解释:我从动态浏览器宽度中减去 980 的主体宽度,然后除以 2 以获得浏览器末端和主体末端之间的空白区域的值。这就是广告所在的位置。

每个相应广告的第二个计算然后计算广告应放置在浏览器屏幕中的位置。

正确的广告很简单。它是浏览器宽度减去 X,这是第一次计算的空白空间值。然后添加 10px。这会将广告设置在正文右侧 10 倍。

左侧广告的第二次计算更复杂,但也会将左侧广告设置在正文左侧 10px 处。

如何使用 jquery 或 javascript 进行这些计算以及在哪里运行 jquery?在 css 样式文件或我的 footer.php 文件中,其中 div 位于代码中?

另外,如果有人知道这个问题的更快解决方案,可以让我的 div 位于身体左侧或右侧 10 像素处。请告诉我。

【问题讨论】:

  • 我不明白你为什么要计算浏览器/窗口的宽度!对于position:fixed 元素,设置left:10pxright:10px 就足以放置它。这不是你想要的吗?
  • 当它被固定时,左右位置由浏览器窗口移动。因此,如果有不同的分辨率或不同的缩放比例,或者如果有人在页面中调整浏览器的大小,则广告将停留在边缘,或者如果他们将其调整为非常小,则广告将位于正文后面。这一切看起来非常不专业和草率。无论如何,我希望广告始终与正文保持 10 像素。

标签: javascript jquery css wordpress position


【解决方案1】:

如果我理解正确,您希望广告与居中的“容器”(而不是 body)相距 10 像素。

如果是这样,只需将每个广告放置在距其各自侧面 50% 的位置并调整边距

Codepen Demo

**HTML**

<div class="Ad left">

</div>

<div class="Ad right">

</div>

<div class="container">

</div>

CSS

.container {
  width:980px;
  margin: 0 auto;
  height:500px;
  background-color: grey;
}

.Ad {
  width: 160px;
  display: block;
  position: fixed;
  top: 10px;
  height: 600px;

}

.left {
  left: 50%;
  background-color: orange;
  margin-left: calc(-160px - (980px/2) - 10px);
  /* element width + 50 % of container width + required distance */
}


.right {
  right:50%;
  background-color: purple;
  margin-right: calc(-160px - (980px/2) - 10px);
}

【讨论】:

  • Paulie_D!感谢您为我指明正确的方向!将左右设置为 50%,然后设置边距就像一个魅力!正是我需要的!我边走边学,即使我是新手,我也不敢相信这个解决方案没有找到我。当一个简单的解决方案一直摆在我面前时,我正试图做一些艰难的事情!谢谢大佬!
  • 顺便说一句,我意识到一旦左右设置为 50%,我就不需要计算任何东西了。然后我将两者的边距设置为 500 像素。全部完成!再次感谢!
  • 我厌倦了按向上箭头,它说我的声望必须达到 15 或更高。他们是另一种给你荣誉的方式吗?
  • 亲爱的 Paulie_D 我在我的网站上使用了你的方法:mpatika.hu,但问题是高度不是给定的高度,而是 100%。你能帮我解决这个问题吗?谢谢:)
  • 我建议您使用适当的代码提出您自己的问题,以便我们可以看到我们正在处理的内容。
猜你喜欢
  • 2015-10-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-11
  • 1970-01-01
  • 2012-05-13
相关资源
最近更新 更多