Ho riscontrato un paio di problemi con il mio layout che non posso spiegare.Comportamenti css inaspettati
layout HTML
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>AuctionProject</title>
<script async type="application/dart" src="auctionproject.dart"></script>
<script async src="packages/browser/dart.js"></script>
<link rel="stylesheet" href="auctionproject.css">
</head>
<body>
<div id="menu_bar">
<div id="logo"></div>
<div class="menu_tab" id="123">Tab123</div>
<div class="menu_tab" id="upcomming">Tab456</div>
</div>
<div id="content_box">
<div id="side_menu">
<div id="open_menu_shadow"></div>
<div id="menu_content" class="hidden">
<div id="account" class="side_label hidden">
<p class="tiny">You are currently logged in as:</p>
<p id="current_user">Some User</p>
<p class="tiny">This is not you?
<span class="important" id="log_out" role="button" tabindex="0" style="cursor: pointer;">Log Out</span>
</p>
</div>
<div id="login_box" class="side_label">
<input type="text" name="login" placeholder="Login">
<input type="text" name="password" placeholder="Password">
<button type="button">Sign In</button>
<p class="tiny">Don't have an account? <span class="important" id="register" role="button" tabindex="0" style="cursor: pointer;">Register</span></p>
</div>
<hr>
<div class="side_label">Add Category</div>
<div class="side_label">Super category 1</div>
<hr>
<div class="side_label">Popular #tags:
<ol id="trendingTags">
<li><div class="label">#Tag123</div></li>
<li><div class="label">#Tag456</div></li>
</ol>
</div>
</div>
<div id="open_menu"><p>< < < < < < < < < <</p></div>
</div>
<div id="smart_box">
</div>
<div id="auction_list">
<div class="auction">
<img src=""></img>
<div class="title">This is a sample title</div>
<div class="teaser">This is a sample teaser </div>
</div>
<div class="auction">
<img src=""></img>
<div class="title">This is a sample auction title</div>
<div class="teaser">This is sample teaser </div>
</div>
</div>
</div>
</body>
</html>
layout CSS
body {
background-color: #FFF;
font-family: 'Open Sans', sans-serif;
font-size: 14px;
font-weight: normal;
line-height: 1.2em;
margin: 0px;
position: absolute;
height: 100%;
width: 100%;
}
h1, p {
color: #333;
}
#menu_bar {
width: 100%;
height: 60px;
padding-bottom: 2px;
border-bottom: 1px solid #aaa;
background-color: #F8F8F8;
}
#logo {
height: 60px;
width: 200px;
margin-right: 40px;
background-color: blue;
display: inline-block;
}
.menu_tab {
margin-left: 25px;
padding: 4px 4px 0px 4px;
border-left: 1px solid #aaa;
border-top: 1px solid #aaa;
border-right: 1px solid #aaa;
font-size: 1.2em;
display: inline-block;
bottom: 0;
background-color: #ccc;
}
#menu_tab_selected {
margin-left: 20px;
padding: 4px 4px 0px 4px;
border-left: 1px solid #aaa;
border-top: 1px solid #aaa;
border-right: 1px solid #aaa;
font-size: 1.2em;
display: inline-block;
bottom: 0;
background-color: #fff;
}
#content_box {
boarder: 2px solid red;
width: 100%;
height: 100%;
}
#side_menu{
boarder: 1px solid #aaa;
height: 100%;
position: absolute;
display: inline-block;
background-color: #F8F8FF;
float: left;
}
#open_menu {
border: 1px solid #aaa;
border-top: 0px solid #aaa;
display:inline-block;
position: absolute;
top: 0;
right: 0;
width: 15px;
height: 100%;
background-color: #eee;
z-index: 3;
}
#open_menu_shadow {
display: inline-block;
position: absolute;
top: 0;
right: 0;
width: 15px;
height: 100%;
box-shadow: -7px 0px 5px #aaa;
position: absolute;
z-index: 1;
}
#open_menu p {
text-align: center;
vertical-align: bottom;
}
#menu_content {
width: 200px;
height: 100%;
display: inline-block;
float: right;
}
#menu_content hr {
border: 0;
border-bottom: 1px dashed #ccc;
background: #999;
margin-top: 20px;
margin-bottom: 20px;
}
.hidden {
display: none;
}
.tiny {
font-size: 0.7em;
}
.important {
color: red;
}
#login_box input {
width: 120px;
margin-bottom: 10px;
}
#current_user {
margin: 4px;
}
.side_label {
border: 1px solid #aaa;
border-top-left-radius: 4px;
border-bottom-left-radius:4px;
margin-top: 15px;
margin-bottom: 15px;
margin-left: 10px;
padding: 10px;
padding-right: 35px;
box-shadow: -7px 7px 5px #aaa;
position: relative;
background-color: #fff;
z-index: 2;
}
.label {
margin: 2px;
padding-left: 5px;
padding-right: 5px;
border-radius: 5px;
font-size: 0.8em;
font-weight: bold;
display: inline-block;
background-color: #ccc;
}
#auction_list {
margin-left: 200px;
padding: 20px;
position: absolute;
display: inline-block;
overflow: auto;
width: calc(100% - 250px);
}
.auction {
padding: 10px;
margin-bottom: 10px;
boarder: 1px solid #aaa;
border-bottom: 1px solid #aaa;
border-top: 1px solid #aaa;
}
.auction img {
width: 60px;
width: 60px;
}
.auction .title {
font-size: 1.2em;
text-decoration: underline;
}
#smart_box {
margin: 10px;
width: 300px;
height: 200px;
float: right;
border: 1px solid #aaa;
}
Il mio primo problema ha a che fare con la proprietà display:none
Il menu si può vedere sulla sinistra (id = "side_menu") ha un div inside con id = "menu_content" e la barra a destra (id = "open_menu"). Per attivare il menu ho creato la classe .hidden
contenente la proprietà display:none
. Mi aspettavo che quando aggiungo questa classe al div "menu_content" scomparirà. Sfortunatamente non succede nulla
Penso che il mio altro problema abbia a che fare con la proprietà inline-block
. Vorrei che la lista dei contenuti principale id = "auction_list" per riempire lo spazio come mostrato di seguito. Il che significa che dovrebbe essere relativo al menu, quindi non devo cambiare il margine sinistro quando si cambia il menu. Inoltre non so come mantenere i post (class = "auction") dallo spostamento sotto div sulla destra (id = "smart_box")
Sarei molto grato per qualsiasi aiuto.
Disclaimer: Si prega di non assumere molte conoscenze pregresse. Sono un novizio html.
@mdeduz Grazie per la tua ampia risposta. Ho solo una domanda in più. Sai se esiste un modo per impostare il margine di 'id = auction_list' relativo a' id = side_menu' e non a 'id = content_box'? Avrei bisogno di avvolgere il menu laterale con un altro div? Ciò sarebbe utile perché non dovrei cambiare il margine a livello di codice, quando comprimo il menu laterale. – Lukasz
Ciao @Lukasz. Penso di capire cosa intendi. Prova a mettere un 'margin-right: 10px' (10px è per l'esempio) sul' # side_menu', e imposta 'margin-left: 0;' (o rimuovi la proprietà * margin-left * su '# auction_list'. –
Ciao @Lukasz! Posso chiederti di contrassegnare la domanda come risolta e convalidare la risposta che pensi sia quella giusta ^^ –