css - 负边距的替代方案

标签 css wordpress

我正在寻找使用负边距的替代方法,因为我知道它们不被认为“酷”,而且被认为是 hacky。

我要在 WordPress 中创建一个新站点,我需要向每个页面添加两个图像。必须链接图像,并且每个页面上的链接必须不同,因此我无法将图像添加到菜单或小部件。

当我将它们添加到页面内容时,它们显示在页眉下方,但我需要它们在页眉内。我把它们定位成这样:

.enflag{
  position:absolute;
  top:0;
  right:0;
}

.zhflag{
  position:absolute;
  top:1%;
  right:1%;
}

然后我在开发工具中添加了一个负边距顶部,它们显示在标题中我需要它们的地方,但我想知道是否有使用负边距的替代方法。

这张图片展示了我在做什么。英文旗帜有负边距,但中文旗帜显示在标题下方,因为它只是定位,将其放在同一个 div 内,而不是页面顶部。

enter image description here

Working Sample

最佳答案

如果使用得当,负边距没有错。这一切都是关于为工作使用正确的工具。在这种情况下,你做的有点不对。

首先,如果定位多个元素说你的标志在右上角,你希望能够轻松地添加/删除它们而不添加 CSS,所以将它们包装在一个绝对定位的容器中,而不是将每个标志定位在它自己的或 float 一个容器中如果合适的话,向右。

HTML

<div class="flag-container">
    <img class="alignright size-full wp-image-19 zhflag" src="http://rmbpay.com.au/tmp/wp-content/uploads/2016/11/Zh-Flag-s.png" alt="Chinese Language Button" width="50" height="35">
    <a href="http://rmbpay.com.au/tmp/"><img class="alignright size-full wp-image-18 enflag" src="http://rmbpay.com.au/tmp/wp-content/uploads/2016/11/british-flag-s.png" alt="English Language Button" width="50" height="35"></a>
</div>

CSS:

.flag-container{
    position: absolute;
    right: 0; 
    top: -65px;
}

并删除 .zhflag.enflag 的所有规则,因为现在不需要它们了。

最好将标志容器移动到具有相对定位且 100% 宽度的导航的容器中,这样可以更好地分组并避免分层问题,尤其是在旧版浏览器中。

关于css - 负边距的替代方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40499673/

相关文章:

php - 限制 Woocommerce 中的购物车商品数量

css - 重复字体图标作为背景图像

html - 是什么导致我的 div 容器中有这么多空间?

php - 为什么 Slick slider 不能在表单标签内工作?

javascript - 如何将滚动速度更改为平滑?

wordpress - Woocommerce 产品列表 - 将 <ul><li> 替换为 Bootstrap div

HTML 按钮 "Push"效果

html - Safari z-index 错误

css - 文件观察器不会从 PhpStorm 中的 Less 文件生成 CSS

wordpress - 页面不使用提供给 wp_insert_post() 的模板