【问题标题】:Page container padding equal exact height header页面容器填充等于精确高度标题
【发布时间】:2017-05-09 11:57:23
【问题描述】:

我在 shopify 商店有一个简单的问题,我已经安装了一个固定的标题并向 pagecontainer 添加了 50 像素的顶部填充,这样标题就不会与主要内容重叠,现在我在移动设备上有 50 像素的间距空间太空了。如果您能帮我为桌面和移动设备设置两个顶部填充,我将不胜感激。

置顶标题:

header.site-header {
    position: fixed;
    z-index: 99999;
    background-color: #fff;
    width: 100%;
    top: 0;
    left: 0;
    right: 0;
    -webkit-box-shadow: 0px 1px 2px 0px rgba(50, 50, 50, 0.36);
    -moz-box-shadow: 0px 1px 2px 0px rgba(50, 50, 50, 0.36);
    box-shadow: 0px 1px 2px 0px rgba(50, 50, 50, 0.36);
}

页面容器(主要内容):

#PageContainer {
    overflow: hidden;
    padding-top: 50px;
    height: 100%;

无论屏幕分辨率如何,如何将 pagecontainer 的上边距设置为与页眉的确切高度相等?或者有一种方法可以为每个分辨率设置不同的填充(可能使用媒体查询?)我 3 天前才开始学习这些东西,但我正在做很多谷歌搜索并且可以学习得非常快..我还找到了一个解决方案这个问题,但我不知道如何实现它:将标头移动到自己的固定包装器:

<div class="header.site-header">
    <div class="PageContainer is-moved-by-drawer">
        This is the fixed header content.
    </div>
</div>

<div class="PageContainer is-moved-by-drawer">
    This is the page content.
</div>

非常感谢!

编辑:这不是我的 html 代码!

【问题讨论】:

  • 你的 CSS 和 HTML 没有任何共同点——你在 CSS 中列出的类在 HTML 中没有使用
  • 这是我在论坛上找到的解决方案,不是我的html代码。
  • 看起来你需要 CSS 媒体查询。您的标题很可能具有移动和桌面的固定高度。使用媒体查询根据屏幕大小匹配此值。
  • @fubar 我的标题没有固定高度,但我可以为桌面做,但在小屏幕上我有一个完全不同的标题(导航栏+汉堡菜单)
  • @Mars14k - 但移动标题是否有固定高度?你有直播网站的链接吗?

标签: html css


【解决方案1】:

您要做的是利用 CSS 媒体查询,这将允许您为不同的设备尺寸定义不同的样式,因此您可以为桌面/笔记本电脑/平板电脑尺寸定义 #PageContainer 样式,并且您可以定义手机的相同#PageContainer 样式不同。

这些是默认的 Bootstrap 媒体查询断点:

/* Custom, iPhone Retina */ 
@media only screen and (min-width : 320px) {

}

/* Extra Small Devices, Phones */ 
@media only screen and (min-width : 480px) {

}

/* Small Devices, Tablets */
@media only screen and (min-width : 768px) {

}

/* Medium Devices, Desktops */
@media only screen and (min-width : 992px) {

}

/* Large Devices, Wide Screens */
@media only screen and (min-width : 1200px) {

}

因此,对于您的应用程序,您要做的是将大型设备的#PageContainer 定义为 50 像素的内边距,而对于小型设备,内边距可能为 20 像素,甚至在中型屏幕上可能为 40 像素。所以在你的 CSS 中有这样的东西

#PageContainer {
    overflow: hidden;
    height: 100%;
}

/* Custom, iPhone Retina */ 
@media only screen and (min-width : 320px) {
    #PageContainer {
        padding-top: 20px;
    }
}

/* Extra Small Devices, Phones */ 
@media only screen and (min-width : 480px) {
    #PageContainer {
        padding-top: 20px;
    }
}

/* Small Devices, Tablets */
@media only screen and (min-width : 768px) {
    #PageContainer {
        padding-top: 30px;
    }
}

/* Medium Devices, Desktops */
@media only screen and (min-width : 992px) {
    #PageContainer {
        padding-top: 50px;
    }
}

/* Large Devices, Wide Screens */
@media only screen and (min-width : 1200px) {
    #PageContainer {
        padding-top: 50px;
    }
}

您实际上只需要最小和最大的@media 块,但我已将它们全部包含在内,因此您可以查看不同的断点并进行实验。

您定义核心样式,无论屏幕大小如何,属性都是相同的块,并且浏览器会将全局属性与当前屏幕大小的@media 特定属性结合起来以设置内容样式。

【讨论】:

  • @stephen-r-smith 非常感谢,非常感谢您的帮助并花时间给我写信,但是我找到了另一种解决方案。我想我会使用百分比,因为它更容易。导航栏高度为 10%,页面边距为 10%。这种方式将成比例且永远不会重叠。
  • 这也有效,这取决于您希望对页面元素进行多少控制。您还可以使用媒体断点来显示/隐藏不同的类,这样您就可以在大屏幕上拥有一个带有按钮和文本的导航栏,并将其替换为汉堡图标 - 小屏幕上的下拉菜单。我会看一下 Bootstrap,特别是用于创建响应式布局的网格布局系统和 @media 断点。从长远来看,我认为您会真正体会到框架提供的灵活性和易用性。
  • @stephen-r-smith 现在我看到标题作为桌面上的固定元素占用了太多垂直空间,我只想让它成为顶部导航栏加上徽标标记滚动时,我知道我需要使用jQuery来改变外观,是不是太难实现了?再次感谢!
  • 我会认真考虑使用媒体查询和固定大小的导航栏而不是 %。在大型桌面显示器上,10% 将是巨大的,而您真正想要的可能是大显示器上的 50 像素和小显示器上的 20 像素,或者类似的东西,这就是 @media css 钩子为您提供精确控制的地方。如果您希望在滚动时缩小导航栏或将其固定到屏幕顶部,我会查看getbootstrap.com/examples/navbar-fixed-top 和此处的文档getbootstrap.com/components/#navbar-fixed-top
  • @stephen-r-smith 我没有提到将导航栏高度设置为 10% 没有效果,我只是将 padding-top 设置为 8% 并测试了网站几种浏览器和分辨率。看起来不错!感谢您的链接。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-21
  • 2014-12-14
  • 1970-01-01
  • 2019-08-06
  • 2019-11-05
相关资源
最近更新 更多