2017-03-08 128 views
0

我正在使用基本模板的網頁上工作。html內容的動態高度

它有一個標題,頂部導航,側面導航,主要內容區域和頁腳。

我在jsfiddle中創建了一個類似的設計,雖然它看起來與我在html中看到的不同。這裏是鏈接:https://jsfiddle.net/f4sc9sy7/8/

這裏是我的代碼:

$(document).ready(function(){ 
 

 
    $(".top-menu").click(function(e){ 
 

 
    // set selectd menu as active 
 
    $(".top-menu").removeClass("active"); 
 

 
    $(this).addClass("active"); 
 
    }); 
 

 
    // main view area height 
 
    var footerHeight = $("footer").outerHeight(); 
 
    var headerHeight = $("header").outerHeight(); 
 
    var menuHeight = $("#top-nav").outerHeight(); 
 
    var htmlHeight = $("html").outerHeight(); 
 

 
    var mainWindowHeight = htmlHeight - (footerHeight + headerHeight + menuHeight); 
 

 
//how to remove this hard coding? 
 
    $("#main-layout").outerHeight(mainWindowHeight-41); 
 

 

 
});
html { 
 
    background: #F5F4EF; 
 
    color: #000305; 
 
    margin: 0; 
 
    padding: 0; 
 
    width: auto; 
 

 
} 
 

 
#side-nav { 
 
    float: left; 
 
    width: 20%; 
 
    height: inherit; 
 
    background: lavender; 
 
} 
 

 
#main-content { 
 
    float: right; 
 
    width: 80%; 
 
    height: inherit; 
 
    background: lightgreen; 
 
} 
 

 
header, 
 
footer { 
 
    background-color: black; 
 
    color: #F5F4EF; 
 
    width: auto; 
 
    text-align: center; 
 
    margin: 0; 
 
    height: 5%; 
 
    padding: 0; 
 
} 
 

 
#top-nav { 
 
    width: auto; 
 
} 
 

 
.topnav { 
 
    overflow: hidden; 
 
    background-color: #333; 
 
} 
 

 
.topnav a { 
 
    float: left; 
 
    display: block; 
 
    color: #f2f2f2; 
 
    text-align: center; 
 
    padding: 14px 16px; 
 
    text-decoration: none; 
 
    font-size: 17px; 
 
} 
 

 
.topnav a:hover { 
 
    background-color: #ddd; 
 
    color: black; 
 
} 
 

 
.topnav a.active { 
 
    background-color: #4CAF50; 
 
    color: white; 
 
}
<html> 
 
<head> 
 
<title> Test HomePage </title> 
 

 
<meta name="viewport" content="width=device-width, initial-scale=1"> 
 
<script src="https://code.jquery.com/jquery-1.12.4.js"></script> 
 
</head> 
 
<header> 
 
<h1> Header </h1> 
 
</header> 
 
<div id="top-nav" class="topnav"> 
 
<a class="top-menu" href="#home">Home</a> 
 
    <a class="top-menu" href="#news">News</a> 
 
    <a class="top-menu" href="#contact">Contact</a> 
 
    <a class="top-menu" href="#about">About</a> 
 
</div> 
 
<div id="main-layout"> 
 

 
    <div id="side-nav"> 
 
    Side Navigation 
 
    </div> 
 

 
    <div id="main-content"> 
 
    content 
 
    </div> 
 
</div> 
 
<footer> 
 
    <h1>Footer </h1> 
 
</footer>

這裏有兩個問題:

  1. 我想設置主要內容的div的高度動態。我希望使用javascript和相關屬性來設置頁面的高度。由於某些未知原因,元素之間存在差距(可能是由於邊距或填充)。如何刪除這個?

  2. 如何使這個HTML跨瀏覽器,使其適用於所有主流瀏覽器?

感謝

更新:我已經更新我的樣式表。刪除了高度設置的javascript代碼。以下是更新的鏈接:https://jsfiddle.net/f4sc9sy7/9/

這現在看起來很接近預期的佈局。現在只有一個總的html高度問題。它超越了瀏覽器的高度,不知道如何糾正它。

這裏是CSS代碼:

html { 
    background: #F5F4EF; 
    color: #000305; 
    margin: 0; 
    padding: 0; 
    width: auto; 
height: 100%; 
} 

body{height: 100%;} 

#side-nav { 
    float: left; 
    width: 20%; 
    height: 100%; 
    background: lavender; 
} 

#main-content { 
    float: right; 
    width: 80%; 
    height: 100%; 
    background: lightgreen; 
} 

header, 
footer { 
    background-color: black; 
    color: #F5F4EF; 
    width: auto; 
    text-align: center; 
    margin: 0; 
    height: 5%; 
    padding: 0; 
} 

H1 { margin:0; } 

.topnav { 
    overflow: hidden; 
    background-color: #333; 
} 

.topnav a { 
    float: left; 
    display: block; 
    color: #f2f2f2; 
    text-align: center; 
    padding: 14px 16px; 
    text-decoration: none; 
    font-size: 17px; 
} 

.topnav a:hover { 
    background-color: #ddd; 
    color: black; 
} 

.topnav a.active { 
    background-color: #4CAF50; 
    color: white; 
} 


#main-layout{ 
height: 90%; 
margin:0; 
} 
+0

一般來說,儘量只用CSS來管理風格,佈局和流。混合使用CSS和JavaScript之間的風格從長遠來看將變得難以管理,最壞的情況可能會開始干擾彼此的指示。 – Nope

+0

要移除元素之間的空間,您需要從H1中刪除邊距。 'H1 {margin:0; }'。這會導致'main-layout'的大小問題,因爲高度是負值。 「主佈局」應該有多高? – erikscandola

+0

感謝您的回覆。我已經添加了保證金:0。它消除了差距。我的目標是使佈局動態化。我使用css來控制外觀和使用javascript來控制元素空間。我的CSS與JavaScript代碼衝突嗎? – kromastorm

回答

-1
#main-layout { 
    min-height:100px; 
} 
+0

將此應用於jsfiddle會增加他覆蓋頁腳 – Nope

+0

的內容的高度感謝您的回覆,我將它添加到了我的html,但它沒有反映任何更改。 – kromastorm

+0

頁腳h1 {margin-top:0px;} – praveena

0

添加height:100%;到HTML

html { 
    background: #F5F4EF; 
    color: #000305; 
    margin: 0; 
    padding: 0; 
    width: auto; 
    height:100%; 
} 

Fiddle

+0

在jsfiddle中,我看到了變化。但在我的網頁中,我沒有看到任何區別。 – kromastorm

+0

如果你可以分享你的網頁的鏈接,我可以幫忙或只是在這裏發佈完整的CSS – amansinghgusain

+0

這裏是樣式塊: html { background:#F5F4EF; 顏色:#000305; margin:0; 填充:0; 寬度:自動; } #side-nav {float}:left; 寬度:20%; 高度:繼承; 背景:薰衣草; } #main-content { float:right; 寬度:80%; 高度:繼承; 背景:淺綠色; } 頁眉,頁腳{ background-color:black; 顏色:#F5F4EF; 寬度:自動; text-align:center; margin:0; 身高:5%; 填充:0; } H1 {margin:0; } .topnav {0} {0} {0} {0}溢出:隱藏; background-color:#333; } – kromastorm