javascript - 在 div 内放置并居中 div

标签 javascript jquery css

我想实现以下布局。 2 divs

基本上 1 个 div 放置在另一个 div 内。
Div1 以圆圈作为背景图像。(div 大小不同)
我想定位 Div2,以便我总是得到上面的布局

我尝试使用centering a div inside another ..没用。
我是否必须为 Div2 指定顶部和左侧?
我希望能够定义 Div2 维度 wrt Div1。

任何帮助。

编辑

使用以下样式和js

.circle
        {
            width: 176px;
            height: 176px;
            top: 0;
            left: 0;
            background: url('images/circle.png') no-repeat left top;
            display :block;
        }

.inner {
            position: absolute;
            height: 80px;
            margin: auto;
            overflow :hidden;
            white-space:normal;             
        }

Jquery :

//parent is the container c

    var $circle_div = $("<div>").attr({ id: "circle_" + id });
    $circle_div.addClass("circle");
    parent.append($circle_div);

    $circle_div.css({ "top": 100, "left": 200, position: 'absolute' });
    var $inner_div = $("<div>").attr({ id: "text_" + id });
    $inner_div.addClass("inner");
    $inner_div.html("text_circle_333333333333444444444444" + id);
    $circle_div.append($inner_div);

谢谢大家

最佳答案

不幸的是,凯尔的回答对于将内部 div 垂直居中没有任何作用。

使用 CSS2.1 实现液体垂直对齐几乎是不可能的。考虑到您的约束是外部 div 内部有一个圆圈,即与 div 本身一样高,您需要使用 Javascript 来计算适合圆圈的内部 div 的绝对位置和尺寸。假设您给出了外部的完整尺寸,并为内部 div 指定了给定的高度。

标记

<div id="outer">  
 <div id="inner">&nbsp;</div>
</div>

CSS

#outer { 
  position: relative; 
  width: 100px; 
  height: 100px;
  backgroud-image: blah
}
#inner {
  position: absolute;
  height: 60px;
}

Javascript(假设是 JQuery)

// prepare for semi-intense math
var radius = $('#outer').width()/2;
var height = $('#inner').height();
var d = Math.sqrt(radius*radius - height*height/4);

$('#inner').width(2*d)
    .css('top', (radius - height/2) + 'px')
    .css('left', (radius - d) + 'px');

编辑:说明

我们需要计算inner.left(称之为x)、inner.top(称之为y) 和 inner.width (称之为 w)。这就是这个问题的样子,红色的值就是我们想要的:

Circle maths

需要注意的是,我们所有点的坐标都有一个原点 (0,0)。该圆的半径等于 outer.width/2 (因为该圆与该 div 一样高和长)。因此,在我们的坐标系中,div 和圆的中心位于 (r, r)(r = 半径)。

首先我们可以从图中推导出 y 坐标,因为我们知道高度 h

y = r - h/2

在图中,我们要寻找的点位于圆上,因此我们使用圆的方程并求解x。因此,给定圆心 (r, r) 和半径 r 的圆方程(记住高中数学):

(x - r)^2 + (y - r)^2 = r^2
(x - r)^2 + (r - h/2 - r)^2 = r^2   --- replacing y
x = r ± sqrt(r^2 - 1/4*h^2)         --- solving for x

这个 x 实际上是两个不同的 x,一个对应于这个 y 坐标上的每个点,并且取决于我们是否在答案中取 + 或 - 平方根。我们需要的是两者中较小的一个。内部 div 的宽度由这两个 x 之间的差值给出。

w = r + sqrt(r^2 - 1/4*h^2) - [r - sqrt(r^2 - 1/4*h^2)]
w = 2*sqrt(r^2 - 1/4*h^2)

关于javascript - 在 div 内放置并居中 div,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3582230/

相关文章:

javascript - HTML5/JS 和 websockets 中的实时协作绘图白板?

javascript - 有没有办法像 alert() 函数那样在 JavaScript 中强制执行同步行为?

javascript - 如何在正则表达式中使用变量?

javascript - 如何调整 100% 高度以包含添加元素的高度

jquery - 点击事件不会在内部 div 上触发

html - 我想展示不同的 gird 之类的产品。我想我不知道我的问题是什么,但我正在展示像这张图片这样的产品

javascript - Rails PWA 中的 CacheStorage 始终为空。在 service-worker.js 中,cache.addAll 似乎没有缓存任何内容

javascript - 导航栏动画从最后到第一个隐藏

jQuery Autocomplete - 缓存不再是一种选择吗?

javascript - 将鼠标悬停在选项卡上时遇到问题