【问题标题】:position absolute left:50% does not position span in the middleposition absolute left:50% 不将 span 定位在中间
【发布时间】:2015-11-19 06:46:39
【问题描述】:

我有一个 wrap div,在里面我有一个绝对的 <span> 位置,因为它是来自 Icomoon 的图标,我需要成为背景的一部分。然后,在与<span> 相同的级别,另一个 div,在这里面我有一个<h1>,一个<p>,一个<input> 和一个<span>

我已将<span> 绝对定位到环绕(它具有相对位置),但虽然我想将它放在中间,但它只需要left:26%,根本不是50%!因此,当我调整屏幕大小时,问题就出现了,它不会停留在环绕的中间。

我在想,为什么会这样?不久前我发布了另一篇文章,因为我想将这个问题包含在 JSFiddle 中,但我无法弄清楚如何在 JSFiddle 中包含字体文件,因此图标不会出现在那里。

有没有人知道我可以做些什么来解决它?

.containerOfSites {
  display: block;
  height: auto;
  float: none !important;
  margin: 0 auto;
}

.wrapPortalItem {
  padding: 0;
}

.insideWrapItem {
  text-align: center;
  border: 3px solid black;
  padding: 15px;
  position: relative;
}

.portalItem {
  background-color: rgba(255, 255, 255, 0.75);
  padding-top: 3%;
  padding-bottom: 10%;
  font-family: 'Open Sans', sans-serif;
  position: relative;
}

.portalItem p {
  margin-bottom: 40%;
  font-size: 30px;
  padding: 5px;
}

.portalItem p>span {
  font-weight: 900;
}

.portalItem span.viewMorePs {
  text-decoration: none;
  font-size: 18px !important;
  z-index: 999;
}

.portalItem h1 {
  color: #B5D803;
  font-weight: 900;
  text-transform: uppercase;
  text-shadow: 2px 2px 0 #fff;
}

.insideWrapItem span[class^="iconI-"] {
  position: absolute;
  color: white;
  bottom: 12%;
  left: 26%;     /* <- */
  font-size: 14em !important;
}
<div id="portalPage" class="col-md-24">
  <div class="containerOfSites col-md-18 col-sm-24">
    <div class="wrapPortalItem col-md-8">
      <div class="insideWrapItem">
        <span class="iconI-iconDA_automotive img-responsive"></span>
        <div class="portalItem portA ">
          <h1>AUTOMOTIVE</h1>
          <p>web sites<br /> for the<br /> <span> automotive<br /> </span> market</p>
          <a href="http://motors06.denison-automotive.co.uk/denison/"><span class="viewMorePsGreen">GO</span></a>
        </div>
      </div>
    </div>

    <div class="wrapPortalItem col-md-8">
      <div class="insideWrapItem">
        <span class="iconI-iconDA_web"></span>
        <div class="portalItem">
          <h1>DESIGN</h1>
          <p>web sites<br /> for the small &<br /> large business<br /> for<span> all sectors</span></p>
          <a href="http://motors06.denison-automotive.co.uk/denison/denison-2/web-sites/"><span class="viewMorePsGreen">GO</span></a>

        </div>
      </div>
    </div>
    <div class="wrapPortalItem col-md-8">
      <div class="insideWrapItem">
        <span class="iconI-iconDA_yourbrand"></span>
        <div class="portalItem">
          <h1>BRANDING</h1>
          <p><span>branding<br /> </span> and<br /> design</p>

          <a href="http://motors06.denison-automotive.co.uk/denison/denison-2/branding/"><span class="viewMorePsGreen">GO</span></a>
        </div>
      </div>
    </div>
    <div class="clearfix"></div>
  </div>
</div>

【问题讨论】:

  • 请出示您的代码
  • @eve_mf 为此我们需要检查您的 html 代码
  • 在一个跨度中你可以使用text-align:center;

标签: html css absolute


【解决方案1】:

要将绝对元素居中放置,您可以使用以下 CSS:

left:0;
right:0;
margin:0 auto;

就像这个例子:http://jsfiddle.net/ucjt51Lc/

left:50% 不起作用,因为元素从左上角对齐,而不是从中心对齐。

【讨论】:

  • 如果元素有背景,这不起作用,因为它会覆盖整个宽度。
【解决方案2】:

如果没有看到一些代码,很难准确地说出来,但我猜你的问题是你的左边缘位于 50%,但你希望它的中心位于其父级的中心?

在跨度上尝试这样的事情(除了任何其他样式):

span {
    position: absolute;
    left: 50%;
    transform: translateX(-50%);
}

这应该将其自身宽度的一半移动(平移)到左侧。

【讨论】:

  • 你是我的上帝!!!!谢谢!!!它完美地工作! (我要检查一下 transform 的作用,因为虽然你的解释听起来很合逻辑,但我不明白:S 虽然你说 left:20% is it always 20% of its parent!
  • 基本上你可以对一个元素应用各种样式来转换它。所以在这方面,翻译意味着围绕一个轴移动它。我们使用 translateX 沿 X 轴移动它(在本例中向后移动 50%)。翻译是相对于自身的(而左边:50% 将相对于它的父级),所以 50% 是它自己宽度的一半。您还可以应用 translate(-50%, -50) ,它将垂直和水平居中(沿 X 和 Y 轴)。值得研究所有 css3,因为它现在非常强大,但请记住浏览器支持(查看 caniuse.com)。
【解决方案3】:

请在 jsFiddle 中包含字体文件。左侧有一个面板,单击外部资源,将字体的 URL 粘贴在那里,然后单击加号。 (我想将此作为评论添加,但 StackOverflow 不允许,因为我还没有获得 50 点声望点......)

【讨论】:

  • 这是我一直在尝试做的,文件是物理文件,我从哪里获取它们的 URL?所以Icomoon,当你生成你的图标时,会给你一个zip,一个.css和4个文件; icomoon.eot、icomoon.svg、icomoon.woff 和 icomoon.ttf。我添加 css 没有问题(很明显),但我不知道如何将这些文件添加为外部文件!!!无论如何,thecraighammond 完美地解决了我的问题!
猜你喜欢
  • 2014-10-19
  • 2021-09-03
  • 1970-01-01
  • 1970-01-01
  • 2018-09-21
  • 2015-06-18
  • 2015-03-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多