2015-04-27 13 views
5

Quindi sto facendo una visualizzazione giornaliera del planner per un sito Web e sto riscontrando problemi con la formattazione. Ecco il codice che ho qui di seguito:Impossibile ottenere% widths per lavorare su una tabella div

CSS

.responsive-calendar .controls { 
    color: #666; 
    font-weight: normal; 
    font-size: 18px; 
    font-family: "Open Sans",Arial,Verdana,sans-serif; 
    text-align: left; 
} 

.responsive-calendar .controls a { 
    cursor: pointer; 
} 

.responsive-calendar .controls h4 { 
    display: inline; 
} 

.responsive-calendar .day-headers, .responsive-calendar .days, .responsive-calendar .timeslots { 
    font-size: 0; 
} 

.responsive-calendar .header { 
    background-color: #f3f2f2 !important; 
    box-shadow: 0px 1px 0px 0px rgb(255, 255, 255) inset; 
    color: rgb(102, 102, 102); 
    font-size: 13px; 
    line-height: 18px; 
    padding: 10px 0px; 
    font-weight: bold; 
    cursor:default !important; 
} 

/* Daily Planner CSS */ 
.responsive-calendar .timeslot { 
    height:auto; 
    display:flex; 
    display:-webkit-flex; 
    flex-flow: row column; 
    -webkit-flex-flow: row column; 
} 

.responsive-calendar .hour { 
    display: inline-block; 
    position: relative; 
    font-size: 10px; 
    border:1px solid rgb(221, 221, 221); 
    width: 10%; 
    text-align: center; 
    flex: 1 1 100%; 
    -webkit-flex:1 1 100%; 
} 

.responsive-calendar .appts { 
    height:auto; 
    display:flex; 
    display:-webkit-flex; 
    width: 900%; 
    flex-flow: row column; 
    -webkit-flex-flow: row column; 
} 

.responsive-calendar .appt { 
    background-color:#CCC; 
    display: inline-block; 
    position: relative; 
    font-size: 10px; 
    border:1px solid rgb(221, 221, 221); 
    width: 90%; 
    text-align: center; 
    flex: 1 1 100%; 
    -webkit-flex:1 1 100%; 
} 

.responsive-calendar .appt a { 
    color: #000000; 
    display: block; 
    cursor: pointer; 
    padding: 5% 0 5% 0; 
} 

.responsive-calendar .timesection { 
    display: inline-block; 
    position: relative; 
    font-size: 10px; 
    border:1px solid rgb(221, 221, 221); 
    text-align: center; 
    flex: 1 1 100%; 
    -webkit-flex:1 1 100%; 
} 

.responsive-calendar .timesection:hover { 
    background-color: rgb(227, 235, 253); 
    cursor: pointer; 
    text-decoration: none; 
} 

.responsive-calendar .timesection a { 
    color: #000000; 
    display: block; 
    cursor: pointer; 
    padding: 3% 0 3% 0; 
} 

.responsive-calendar .timesection a:hover { 
    /* background-color: #eee; */ 
    text-decoration: none; 
} 

.responsive-calendar .timesection.header { 
    border-bottom: 1px gray solid; 
} 

.responsive-calendar .timesection.active { 
    background-color: rgb(209, 206, 224); 
} 

.responsive-calendar .timesection.active:hover { 
    background-color: rgb(227, 235, 253); 
} 

.responsive-calendar .timesection.not-current { 
    background-color: rgb(205, 205, 205); 
    cursor:default; 
} 

HTML

<div class="responsive-calendar"> 
    <div class="controls"> 
     <img src="images/left_16.png" /> 
     <?php echo date("M d, Y", mktime(0,0,0,$cMonth,$cDay,$cYear)); ?> 
     <img src="images/right_16.png" /> 
     <a style="padding-left:15px;">Today</a> 
     <a style="padding-left:15px;">Monthly View</a> 
    </div> 
    <div class="day-headers"> 
     <div class="hour header"><strong>Times</strong></div> 
     <div class="appt header"><strong>Appointments</strong></div> 
    </div> 
    <div class="timeslots"> 
     <div class="timeslot"> 
      <div class="timesection hour">10:00am</div> 
      <div class="timesection appt">Test 1</div> 
     </div> 
     <div class="timeslot"> 
      <div class="timesection hour">11:00am</div> 
      <div class="timesection appt">Test 2</div> 
      <div class="timesection appt">Test 3</div> 
     </div> 
     <div class="timeslot"> 
      <div class="timesection hour">12:00pm</div> 
      <div class="appts"> 
       <div class="timesection appt">Hack Result 1</div> 
      </div> 
     </div> 
     <div class="timeslot"> 
      <div class="timesection hour">12:00pm</div> 
      <div class="appts"> 
       <div class="timesection appt">Hack Result 2</div> 
       <div class="timesection appt">Hack Result 3</div> 
      </div> 
     </div> 
    </div> 
</div> 

Ecco un JSFiddle demo.

Quindi nella demo, quello che voglio è il risultato compromesso (le ultime 2 righe della tabella div).

Sto usando bootstrap 3.3.4 e il CSS allegato per modellare la pagina. Non sono sicuro del motivo per cui non riesco a far dividere correttamente le divisioni di intestazione in base alle percentuali (10%, 90%), ma in seguito le div in basso non vogliono corrispondere.

Nel risultato compromesso, ho appena aggiunto un'altra classe, app, e gonfiato al 900% e si avvicina a quello che volevo. Ma voglio farlo correttamente, e capire perché questo non funziona come speravo.

Quello che voglio sono tutte le volte il 10% della larghezza disponibile e quindi le app per occupare il 90% della larghezza disponibile. Se c'è più di un .appt, allora dividono uniformemente la larghezza del 90%.

+2

Giusto per interesse, c'è qualche ragione per cui non si sta utilizzando una tabella reale per queste informazioni (sono dati tabulari)? –

+0

@HiddenHobbes - Voglio che questo abbia un bell'aspetto sui dispositivi mobili e si adatti bene. Ho fatto questo con un tavolo e non è in scala, o almeno non potrei farlo scalare bene. –

+2

@DavidAvellan Ottenere che questo funzioni su dispositivi mobili e il ridimensionamento in modo corretto dovrebbe essere * più facile * con le tabelle rispetto a div, imo. –

risposta

3

ne dite di questo:

.responsive-calendar .controls { 
 
    color: #666; 
 
    font-weight: normal; 
 
    font-size: 18px; 
 
    font-family: "Open Sans", Arial, Verdana, sans-serif; 
 
    text-align: left; 
 
} 
 
.responsive-calendar .controls a { 
 
    cursor: pointer; 
 
} 
 
.responsive-calendar .day-headers, 
 
.responsive-calendar .days, 
 
.responsive-calendar .timeslots { 
 
    font-size: 0; 
 
} 
 
.responsive-calendar .header { 
 
    background-color: #f3f2f2 !important; 
 
    box-shadow: 0px 1px 0px 0px rgb(255, 255, 255) inset; 
 
    color: rgb(102, 102, 102); 
 
    font-size: 13px; 
 
    line-height: 18px; 
 
    padding: 10px 0px; 
 
    font-weight: bold; 
 
    cursor: default !important; 
 
} 
 
.responsive-calendar .hour { 
 
    font-size: 10px; 
 
    border: 1px solid rgb(221, 221, 221); 
 
    width: 10%; 
 
    text-align: center; 
 
    max-width: 10%; 
 
    float: left; 
 
} 
 
.responsive-calendar .appts { 
 
    height: auto; 
 
    display: flex; 
 
} 
 
.responsive-calendar .appt { 
 
    background-color: #CCC; 
 
    font-size: 10px; 
 
    border: 1px solid rgb(221, 221, 221); 
 
    text-align: center; 
 
} 
 
.responsive-calendar .appt a { 
 
    color: #000000; 
 
    display: block; 
 
    cursor: pointer; 
 
    padding: 5% 0 5% 0; 
 
} 
 
.responsive-calendar .timesection { 
 
    display: inline-block; 
 
    position: relative; 
 
    font-size: 10px; 
 
    border: 1px solid rgb(221, 221, 221); 
 
    text-align: center; 
 
    flex: 1 1 100%; 
 
    -webkit-flex: 1 1 100%; 
 
} 
 
.responsive-calendar .timesection:hover { 
 
    background-color: rgb(227, 235, 253); 
 
    cursor: pointer; 
 
    text-decoration: none; 
 
} 
 
.responsive-calendar .timesection a { 
 
    color: #000000; 
 
    display: block; 
 
    cursor: pointer; 
 
    padding: 3% 0 3% 0; 
 
} 
 
.responsive-calendar .timesection a:hover { 
 
    text-decoration: none; 
 
} 
 
.responsive-calendar .timesection.header { 
 
    border-bottom: 1px gray solid; 
 
} 
 
.responsive-calendar .timesection.active { 
 
    background-color: rgb(209, 206, 224); 
 
} 
 
.responsive-calendar .timesection.active:hover { 
 
    background-color: rgb(227, 235, 253); 
 
} 
 
.responsive-calendar .timesection.not-current { 
 
    background-color: rgb(205, 205, 205); 
 
    cursor: default; 
 
} 
 
.appt { 
 
    max-width: 100%; 
 
}
<link href="//maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css" rel="stylesheet" /> 
 

 
<div class="responsive-calendar"> 
 
    <div class="controls"> 
 
    <img src="images/left_16.png" /> 
 
    <?php echo date("M d, Y", mktime(0,0,0,$cMonth,$cDay,$cYear)); ?> 
 
    <img src="images/right_16.png" /> <a style="padding-left:15px;">Today</a> 
 
    <a style="padding-left:15px;">Monthly View</a> 
 

 
    </div> 
 
    <div class="day-headers"> 
 
    <div class="hour header"><strong>Times</strong> 
 
    </div> 
 
    <div class="appt header"><strong>Appointments</strong> 
 
    </div> 
 
    </div> 
 
    <div class="timeslots"> 
 
    <div class="timeslot"> 
 
     <div class="timesection hour">10:00am</div> 
 
     <div class="appts"> 
 

 
     <div class="timesection appt">Test 1</div> 
 
     </div> 
 
    </div> 
 
    <div class="timeslot"> 
 
     <div class="timesection hour">11:00am</div> 
 
     <div class="appts"> 
 
     <div class="timesection appt ">Test 2</div> 
 
     <div class="timesection appt ">Test 3</div> 
 
     </div> 
 
    </div> 
 
    <div class="timeslot"> 
 
     <div class="timesection hour">12:00pm</div> 
 
     <div class="appts"> 
 
     <div class="timesection appt">Hack Result 1</div> 
 
     </div> 
 
    </div> 
 
    <div class="timeslot"> 
 
     <div class="timesection hour">12:00pm</div> 
 
     <div class="appts"> 
 
     <div class="timesection appt">Hack Result 2</div> 
 
     <div class="timesection appt">Hack Result 3</div> 
 
     </div> 
 
    </div> 
 
    </div> 
 
</div>

Quello che ho fatto:

HTML:

  • Avvolto gli elementi che hanno .timesection .appt con un div.appts.

CSS:

  • completamente rimosso .responsive-calendar .timeslot css.

  • Rimosso display:inline-block;, position:relative; e aggiunto float:left; a .responsive-calendar .hour.

  • Rimosso display:-webkit-flex;, width: 900%;, flex-flow: row column;, -webkit-flex-flow: row column; da .responsive-calendar .appts.

  • Rimosso flex, width, position e display da .responsive-calendar .appt.

  • Finalmente aggiunto .appt un max-width: 100%;

trovare anche un example pen.

+2

È necessario includere 'bootstrap.min.css' da qualche parte nello snippet di codice. –

+0

Grazie per il suggerimento, ora è incluso. – cch

+0

Ok, quindi questo è un passo nella giusta direzione, ma c'è ancora un problema. Se il div dell'appt è più alto (aggiungi uno
o due), l'app div div e l'app div si allunga di conseguenza, ma il div ore non lo fa. Mi piacerebbe che tutti scalassero insieme. Ecco un esempio di ciò che intendo utilizzare il nuovo codice: https://jsfiddle.net/davellan/ndv51kqz/ –

Problemi correlati