So fügen Sie eine Schaltfläche in einer Eingabe hinzu [closed]

Lesezeit: 7 Minuten

Benutzeravatar von Vlad Otrocol
Vlad Otrokol

Wie platziere ich eine Schaltfläche wie unten gezeigt visuell in einem Eingabeelement?

Passworteingabe

Der Benutzer sollte in der Lage sein, wie gewohnt mit der Eingabe zu interagieren. Der Text sollte nicht hinter den Button gehen, auch wenn er lang ist. Der Fokus sollte korrekt funktionieren. Das Formular sollte barrierefrei sein und in Screenreadern korrekt funktionieren. Die gesamte Komponente sollte mit CSS gestaltbar sein und in der Lage sein, die Größe einfach an den verfügbaren Platz anzupassen.

Wie erreiche ich das mit modernem CSS?

  • Mit CSS sollte das gehen, was hast du probiert?

    – Nick Pickering

    9. März 2013 um 18:35 Uhr

  • Das könnte Ihnen schnell helfen – geeksforgeeks.org/…

    – Tushar Walzade

    17. Mai 2022 um 14:57 Uhr

Die Schaltfläche befindet sich nicht innerhalb der Eingabe. Hier:

input[type="text"] {
    width: 200px;
    height: 20px;
    padding-right: 50px;
}

input[type="submit"] {
    margin-left: -50px;
    height: 20px;
    width: 50px;
}

Beispiel: http://jsfiddle.net/s5GVh/

  • So mache ich es, aber ich kann nicht herausfinden, wie ich verhindern kann, dass der Text die Schaltfläche “Senden” überlappt.

    – Benutzer1078385

    11. Oktober 2013 um 10:16 Uhr

  • Es sollte nicht passieren, wenn Sie die gleiche Breite für verwenden padding-right Und margin-left

    – Sonne

    12. September 2014 um 14:44 Uhr

  • +1 zum Auffüllen der Eingabe nach rechts. Behebt alle Probleme mit Standard-Browser (IE10, iOS usw.) Eingabe-Clear-Schaltflächen, die sich mit der Suchschaltfläche überschneiden.

    – Liam Gray

    11. September 2015 um 13:25 Uhr

  • Dies beantwortet die Frage nicht. Die Frage ist, wie man es in die Eingabe einfügt. Ich bin hierher gekommen, um nach einer Möglichkeit zu suchen, es im Inneren zu haben und die Sichtbarkeit der Schaltfläche basierend auf der Wertänderung umzuschalten.

    – Johan Tiden

    20. Oktober 2016 um 8:19 Uhr

  • @JohanTidén Es beantwortet die Frage. Für einen Benutzer befindet sich die Schaltfläche innerhalb des Felds. Da wir Programmierer sind, können wir natürlich sagen, dass es nicht wirklich drin ist … aber das ist nebensächlich. Es geht darum, einem Benutzer ein angenehmes Erlebnis zu bieten.

    – Sami Fouad

    5. Februar 2017 um 13:20 Uhr

Benutzeravatar von superluminary
superluminary

Verwenden Sie eine Flexbox und legen Sie den Rahmen auf das Formular.

Das geht jetzt (2022) am besten mit einer Flexbox.

  • Setzen Sie den Rahmen auf das enthaltende Element (in diesem Fall habe ich das Formular verwendet, aber Sie könnten ein div verwenden).
  • Verwenden Sie ein Flexbox-Layout, um die Eingabe und die Schaltfläche nebeneinander anzuordnen. Lassen Sie zu, dass sich die Eingabe ausdehnt, um den gesamten verfügbaren Platz einzunehmen.
  • Blenden Sie nun die Eingabe aus, indem Sie ihren Rand entfernen.

Führen Sie das Snippet unten aus, um zu sehen, was Sie erhalten.

form {
  /* This bit sets up the horizontal layout */
  display:flex;
  flex-direction:row;
  
  /* This bit draws the box around it */
  border:1px solid grey;

  /* I've used padding so you can see the edges of the elements. */
  padding:1px;
}

input {
  /* Tell the input to use all the available space */
  flex-grow:2;
  /* And hide the input's outline, so the form looks like the outline */
  border:none;
}

/* remove the input focus blue box, it will be in the wrong place. */
input:focus {
  outline: none;
}

/* Add the focus effect to the form so it contains the button */
form:focus-within { 
  outline: 1px solid blue 
}

button {
  /* Just a little styling to make it pretty */
  border:1px solid blue;
  background:blue;
  color:white;
}
<form>
  <input />
  <button>Go</button>
</form>

Warum das gut ist

  • Es dehnt sich auf jede Breite aus.
  • Der Knopf wird immer genau so groß sein, wie er sein muss. Es wird sich nicht dehnen, wenn der Bildschirm breit ist, oder schrumpfen, wenn der Bildschirm schmal ist.
  • Der eingegebene Text geht nicht hinter die Schaltfläche.

Vorbehalte und Browserunterstützung

Es gibt eine eingeschränkte Flexbox-Unterstützung in IE9, daher befindet sich die Schaltfläche nicht auf der rechten Seite des Formulars. IE9 wird seit einigen Jahren nicht mehr von Microsoft unterstützt, daher fühle ich mich persönlich damit recht wohl.

Ich habe hier minimales Styling verwendet. Ich habe in der Polsterung gelassen, um die Kanten der Dinge zu zeigen. Sie können dieses Aussehen natürlich so gestalten, wie Sie es möchten, mit abgerundeten Ecken, Schlagschatten usw.

  • Was weist die Schaltfläche an, rechts ausgerichtet zu werden?

    – Christiaan Westerbeek

    1. November 2018 um 9:48 Uhr

  • @Neowizard Sie sollten das OP fragen, indem Sie seiner Frage einen Kommentar hinzufügen. Sie können die akzeptierte Antwort auch ablehnen (als kleiner Beitrag, um die Dinge klarzustellen).

    – Christiaan Westerbeek

    1. November 2018 um 9:51 Uhr

  • Diese Lösung zeigt im Fokus keinen blauen Rand um das äußere Element. Sehen Sie hier, wie Sie das erreichen: stackoverflow.com/questions/38644773/…

    – Roy Prins

    16. August 2019 um 12:18 Uhr

  • @ RoyPrins – guter Punkt. Verwendung der :focus-within Pseudoklasse auf dem Formular würde es Ihnen ermöglichen, das blaue Fokusfeld wiederherzustellen, wenn Sie dies wünschen.

    – Überlicht

    27. August 2019 um 10:54 Uhr

  • Bitte vermeiden Sie überflüssige Bearbeitungen.

    – TylerH

    30. Januar 2020 um 13:50 Uhr

Benutzeravatar von Lars-Lasse
Lars Lasse

.flexContainer {
    display: flex;
}

.inputField {
    flex: 1;
}
<div class="flexContainer">
    <input type="password" class="inputField">
    <button type="submit"><img src="https://stackoverflow.com/questions/15314407/arrow.png" alt="Arrow Icon"></button>
</div>

Benutzeravatar von Sahil Popli
Sahil Popli

Ich habe einen tollen Code für dich gefunden:

HTML

<form class="form-wrapper cf">
    <input type="text" placeholder="Search here..." required>
    <button type="submit">Search</button>
</form>

CSS

/*Clearing Floats*/
.cf:before, .cf:after {
    content:"";
    display:table;
}

.cf:after {
    clear:both;
}

.cf {
    zoom:1;
}    
/* Form wrapper styling */
.form-wrapper {
    width: 450px;
    padding: 15px;
    margin: 150px auto 50px auto;
    background: #444;
    background: rgba(0,0,0,.2);
    border-radius: 10px;
    box-shadow: 0 1px 1px rgba(0,0,0,.4) inset, 0 1px 0 rgba(255,255,255,.2);
}

/* Form text input */

.form-wrapper input {
    width: 330px;
    height: 20px;
    padding: 10px 5px;
    float: left;   
    font: bold 15px 'lucida sans', 'trebuchet MS', 'Tahoma';
    border: 0;
    background: #eee;
    border-radius: 3px 0 0 3px;     
}

.form-wrapper input:focus {
    outline: 0;
    background: #fff;
    box-shadow: 0 0 2px rgba(0,0,0,.8) inset;
}

.form-wrapper input::-webkit-input-placeholder {
   color: #999;
   font-weight: normal;
   font-style: italic;
}

.form-wrapper input:-moz-placeholder {
    color: #999;
    font-weight: normal;
    font-style: italic;
}

.form-wrapper input:-ms-input-placeholder {
    color: #999;
    font-weight: normal;
    font-style: italic;
}   

/* Form submit button */
.form-wrapper button {
    overflow: visible;
    position: relative;
    float: right;
    border: 0;
    padding: 0;
    cursor: pointer;
    height: 40px;
    width: 110px;
    font: bold 15px/40px 'lucida sans', 'trebuchet MS', 'Tahoma';
    color: #fff;
    text-transform: uppercase;
    background: #d83c3c;
    border-radius: 0 3px 3px 0;     
    text-shadow: 0 -1px 0 rgba(0, 0 ,0, .3);
}  

.form-wrapper button:hover {    
    background: #e54040;
}  

.form-wrapper button:active,
.form-wrapper button:focus {  
    background: #c42f2f;
    outline: 0;  
}

.form-wrapper button:before { /* left arrow */
    content: '';
    position: absolute;
    border-width: 8px 8px 8px 0;
    border-style: solid solid solid none;
    border-color: transparent #d83c3c transparent;
    top: 12px;
    left: -6px;
}

.form-wrapper button:hover:before {
    border-right-color: #e54040;
}

.form-wrapper button:focus:before,
.form-wrapper button:active:before {
        border-right-color: #c42f2f;
}     

.form-wrapper button::-moz-focus-inner { /* remove extra button spacing for Mozilla Firefox */
    border: 0;
    padding: 0;
}    

Demo: Auf Geige
Quelle: Speckyboy

Benutzeravatar von Brennan James
Brennan James

Dies ist die sauberste Art, dies zu tun Bootstrap v3.

<div class="form-group">
    <div class="input-group">
        <input type="text" name="search" class="form-control" placeholder="Search">
        <span><button type="submit" class="btn btn-primary"><i class="fa fa-search"></i></button></span>
     </div>
</div>

vans Benutzeravatar
Lieferwagen

Dies kann mit Inline-Block erreicht werden
JS geige hier

<html>
<body class="body">
    <div class="form">
        <form class="email-form">
            <input type="text" class="input">
            <a href="#" class="button">Button</a>
        </form>
    </div>
</body>
</html>


<style>
* {
    box-sizing: border-box;
}

.body {
    font-family: Arial, sans-serif;
    font-size: 14px;
    line-height: 20px;
    color: #333;
}

.form {
    display: block;
    margin: 0 0 15px;
}

.email-form {
    display: block;
    margin-top: 20px;
    margin-left: 20px;
}

.button {
    height: 40px;
    display: inline-block;
    padding: 9px 15px;
    background-color: grey;
    color: white;
    border: 0;
    line-height: inherit;
    text-decoration: none;
    cursor: pointer;
}

.input {
    display: inline-block;
    width: 200px;
    height: 40px;
    margin-bottom: 0px;
    padding: 9px 12px;
    color: #333333;
    vertical-align: middle;
    background-color: #ffffff;
    border: 1px solid #cccccc;
    margin: 0;
    line-height: 1.42857143;
}
</style>

1446070cookie-checkSo fügen Sie eine Schaltfläche in einer Eingabe hinzu [closed]

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy