2017-06-20 6 views
0

Ich habe die Daten von einer API erhalten und mit HTML angezeigt.Wie erhalten Sie die Schaltflächen nebeneinander in der gleichen Zeile?

#dat { 
 
    position: absolute; 
 
    width: 100px; 
 
    height: 100px; 
 
    left: 50%; 
 
    top: 50%; 
 
    margin-left: -50px; 
 
    margin-top: -50px; 
 
} 
 

 
button { 
 
    margin-left: 20px; 
 
    display: inline; 
 
}
<h1><u>Weather App</u></h1> 
 
<div id="dat"> 
 
    <p id="data"></p> 
 
    <p id="temp"></p> 
 
    <p id="time"></p> 
 

 
    <button onclick="convertc()">imperial</button> 
 
    <button onclick="convertf()">metric</button> 
 
</div>

Das Problem ist, dass sowohl die Tasten sind über another.I es auf der gleichen Linie bringen wollen. Danke.

+0

Haben Sie schon von der "Entwicklerkonsole" gehört? Drücken Sie F12 und tauchen Sie ein in die Debugging-Magie ... – Christoph

+0

Sie legen eine Breite von 100px zum übergeordneten Element der Schaltflächen fest. Sie können nicht in 100px passen. Sie müssen diese Breite erhöhen. –

Antwort

2

Sie haben nicht genügend Breite für beide Tasten erlaubt.

Ich änderte die Breite auf 200px;

#dat{ 
 
    position:absolute; 
 
    width:200px; 
 
    height:100px; 
 
    left:50%; 
 
    top:50%; 
 
    margin-left:-50px; 
 
    margin-top:-50px; 
 
} 
 
button{ 
 
margin-left:20px; 
 
    display:inline; 
 
}
<h1><u>Weather App</u></h1> 
 
    <div id="dat"> 
 
    <p id="data"> 
 
    </p> 
 
    <p id="temp"> 
 
    </p> 
 
    <p id="time"> 
 
    </p> 
 

 
    <button onclick="convertc()">imperial</button> 
 
    <button onclick="convertf()">metric</button> 
 
</div>

1

Das Problem ist, die Tasten sind im Inneren des #dat div, die nur 100px breit sein gesetzt. Wenn Sie möchten, dass sie in derselben Zeile zentriert sind, fügen Sie ein neues div außerhalb div mit width: 100% und text-align: center hinzu.

#dat { 
 
    position: absolute; 
 
    width: 100px; 
 
    height: 100px; 
 
    left: 50%; 
 
    top: 50%; 
 
    margin-left: -50px; 
 
    margin-top: -50px; 
 
} 
 

 
button { 
 
    margin-left: 20px; 
 
    display: inline; 
 
} 
 

 
#buttondiv { 
 
    width: 100%; 
 
    text-align: center; 
 
}
<h1><u>Weather App</u></h1> 
 
<div id="dat"> 
 
    <p id="data"> 
 
    </p> 
 
    <p id="temp"> 
 
    </p> 
 
    <p id="time"> 
 
    </p> 
 
</div> 
 
<div id="buttondiv"> 
 
    <button onclick="convertc()">imperial</button> 
 
    <button onclick="convertf()">metric</button> 
 
</div>

+0

Sie sollten einige Grenzen zu den divs hinzufügen, dann sehen Sie, dass dies mit dem absolut positionierten '# dat' Container kollidieren könnte. Besser, es geschachtelt zu halten oder die Positionierung beider Container auf den gleichen Typ zu ändern. – Christoph

1

etwas anderer Ansatz dann oben, floatleft; und auto Breite verwendet wird.

Erstellt CSS-Klassen als wiederverwendbare.

#dat { 
 
    position: absolute; 
 
    height: 100px; 
 
    left: 50%; 
 
    top: 50%; 
 
    margin-left: -50px; 
 
    margin-top: -50px; 
 
    width: auto; 
 
} 
 

 
.pull-left { 
 
    float:left; 
 
} 
 

 
.ml-10 { 
 
    margin-left: 10px; 
 
}
<h1><u>Weather App</u></h1> 
 
<div id="dat"> 
 
    <p id="data"></p> 
 
    <p id="temp"></p> 
 
    <p id="time"></p> 
 
    
 
    <button onclick="convertc()" class="pull-left">imperial</button> 
 
    <button onclick="convertf()" class="pull-left ml-10">metric</button> 
 
    
 
</div>

1

Sie können zwei Tasten in verschiedenen div und anwenden CSS in jedem div Breite anzupassen trennen.

<div> 
<button onclick="convertc()">imperial</button> 
</div> 
<div> 
<button onclick="convertf()">metric</button> 
</div> 

Neben können Sie Bootstrap verwenden sie für alle Geräte inline zu halten.

1

wäre Meine Vorschläge wie folgt:

  1. nicht die <u> Tag für unterstrichen unlinked Text anwenden. Dieser visuelle Mechanismus bedeutet etwas anklickbares. Die Verwendung für nicht umsetzbaren Text ist schlecht UX.
  2. Verwenden Sie ein <ul>-Tag für die Datenelemente anstelle von <p> Tags. Semantisch ist die Information eine Liste und keine Absätze von Textinformationen.
  3. Verwenden Sie für die <div> Tags eine Breite von 100%, sodass Ihre Benutzeroberfläche mit dem Besucher-Ansichtsfenster skalierbar ist. Das CSS zentriert die Schaltflächen weiterhin, wenn sich die Ansichtsfenstergröße ändert.

Siehe den folgenden Code:

#dat { 
 
    width: 100%; 
 
    margin: 0; 
 
} 
 

 
#dat ul 
 
{ 
 
    list-style:none; 
 
    margin:10px 0; 
 
    padding:0; 
 
} 
 

 
#dat .btns 
 
{ 
 
    width:100%; 
 
    text-align:center; 
 
} 
 

 
#dat .btns button { 
 
    display: inline; 
 
}
<h1>Weather App</h1> 
 
<div id="dat"> 
 
    <ul> 
 
    <li id="data"></li> 
 
    <li id="temp"></li> 
 
    <li id="time"></li> 
 
    </ul> 
 
    <div class="btns"> 
 
    <button onclick="convertc()">imperial</button> 
 
    <button onclick="convertf()">metric</button> 
 
    </div> 
 
</div>

+0

Vielen Dank für die Tipps.Beachten Sie es.Ich habe einen Zweifel, warum verwendet eine ul besser diesen Absatz? –

+0

Der Vorteil besteht darin, semantisches Markup zu schreiben (ein Thema, das größer ist, als ich in einem Kommentar beschreiben kann), aber kurz gesagt ist Semantic HTML die Verwendung von HTML-Markup, um die Semantik oder Bedeutung der Informationen in Webseiten und Webanwendungen zu verstärken nur um seine Präsentation oder sein Aussehen zu definieren. Bei den angezeigten Informationen handelt es sich um eine Liste von Daten anstelle von vollständigen Absätzen von Textinhalt, wodurch ein List-Tag geeigneter wird. – ezekielDFM

Verwandte Themen