无法定位元素

Posted

技术标签:

【中文标题】无法定位元素【英文标题】:Can't manage to position elements 【发布时间】:2012-01-11 13:55:11 【问题描述】:

我有一个 Span 标签,其中包含一个 IMG 标签和另一个 Span 标签。 我希望内部 Span 标签向左对齐,IMG 标签居中对齐,而且我希望两个标签都在中间垂直对齐,但我似乎无法做到这一点......

这是它的外观(它是蓝色的,因为在 FireBug 中标记了外部 Span 标记以表明它正在拉伸整个表面):

正如你在图片中看到的,两个标签都居中并且它们也在容器的顶部对齐,我不想要这两个。

这是标记:

这是标签的当前 CSS:

.v-button-wrap 
    height: 100%;
    display: block;
    padding: 6px 15px 0 9px;
    vertical-align: middle;
    line-height: normal;
    text-align: center;


.v-icon 
    margin-left: auto;
    margin-right: auto;
    vertical-align: middle;
    line-height: normal;
    text-align: center;


.v-button-caption 
    text-align: left;
    line-height: normal;
    vertical-align: middle;

我省略了与我的问题、颜色、字体规范等无关的 CSS。不用说,我不是 CSS 方面的高手。而且我查看了几个涵盖该问题的指南,但我只设法找到了 div 的全部内容居中的示例,这不是我想要的。

有良好的 CSS 知识的人是否在我的代码中发现了问题?或者有其他解决方案来解决我的问题..?

谢谢!

编辑:根据要求,这是整个布局的屏幕截图。对不起,我不得不模糊一些东西......但它们在任何一种情况下都不重要。 =)

EDIT2:我确实设法使用以下 CSS 解决了我的问题:

.v-button-details-panel-header .v-button-wrap 
    height: 100%;
    text-align: inherit;
    padding: 0px;


.v-button-details-panel-header .v-button-wrap .v-button-caption 
    display: table-cell;
    position: relative;
    text-align: left;


.v-button-details-panel-header .v-button-wrap .v-icon 
    display: table-cell;
    position: relative;
    top: 12px;
    margin-left: auto;
    margin-right: auto;

我确信dgvid 提出的建议对于静态布局会很有用。但是由于面板和水平拉伸的按钮会根据展开和折叠而移动,这不是一个合适的解决方案。

【问题讨论】:

很难辨认出您发布的图片。也许您想要实现的屏幕截图以及我们可以复制/粘贴的 html sn-p 会有所帮助。 我可以发一张截图。发布 HTML 将非常困难.. 你看我正在 Vaadin 开发(类似 GWT 的框架),我真的无法控制标记,它是从 java 代码生成的,我可以在 FireBug 中看到的标记非常难跟...共事。标签上的标签上的标签....所以我已经添加的小型 HTML sn-p 几乎是我能得到的。但是,发布的这个sn-p应该是唯一影响我所指的定位的东西。 【参考方案1】:

您可能需要将 img 和 span.v_button_caption 的 CSS display 属性设置为 inline-block

另见这篇文章:Understanding vertical-align, or "How (Not) To Vertically Center Content"

至于实现所需结果的另一种技术:如果您知道容器元素的高度并且知道要居中的元素的高度(不幸的是,从您发布的 CSS 来看,您似乎并没有做),那么你可以

    给容器元素CSS属性`position:relative' 赋予元素居中CSS属性position: absolute 将待居中元素的 CSS top 属性设置为 (containerHeight / 2) - (centeredEltHeight / 2)。

【讨论】:

谢谢!我会看看这个。现在在下班途中,所以我无法立即对其进行测试...我认识到了解垂直对齐或“如何(不)垂直居中内容”,我在自己的研究中遇到了它,我想我会再看一遍!但我会在星期一回来试一试 好文章。这非常有用。

以上是关于无法定位元素的主要内容,如果未能解决你的问题,请参考以下文章

两个DIV,父元素相对定位没有设置高度,子元素绝对定位高度随内容变化,此无法撑开父DIV

当子元素需要相对父元素定位时,父元素无法被子元素撑大该怎么办

selenium02-元素无法定位解决办法(简单)

Python Selenium 无法定位元素

selenium无法定位元素问题

selenium使用笔记——元素定位