如何在输入内添加按钮

Vla*_*col 53 html css html5 html-input css3

我想要实现这个目标: 在此输入图像描述

我希望蓝色箭头充当带有悬停和onclick触发器的按钮; 这可能吗??

Alf*_*lfo 81

按钮不在输入内.这里:

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

input[type="submit"] {
    margin-left: -50px;
    height: 20px;
    width: 50px;
}
Run Code Online (Sandbox Code Playgroud)

示例:http://jsfiddle.net/s5GVh/

  • 这就是我这样做但是我无法弄清楚如何防止文本重叠提交按钮. (5认同)
  • 如果你对`padding-right`和`margin-left`使用相同的宽度,就不会发生这种情况 (5认同)
  • @JohanTidén确实回答了这个问题.对于用户,该按钮位于该字段内.当然,因为我们是编码员,我们可以说它不是真的在里面......但除此之外.关键是为用户提供愉快的体验. (2认同)

sup*_*ary 41

使用flexbox,并将边框放在窗体上.

现在(2017)最好的方法是使用flexbox.

  • 将边框放在包含元素上(在这种情况下,我使用了表单,但您可以使用div).
  • 使用flexbox布局并排排列输入和按钮.允许输入拉伸以占用所有可用空间.
  • 现在通过删除边框来隐藏输入.

运行下面的代码段,看看你得到了什么.

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:2px;
}

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;
}

input:focus {
  /* removing the input focus blue box. Put this on the form if you like. */
  outline: none;
}

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

为什么这很好

  • 它会伸展到任何宽度.
  • 按钮总是和它需要的一样大.如果屏幕较宽则不会拉伸,或者如果屏幕较窄则不会缩小.
  • 输入文本不会在按钮后面.

注意事项

IE9中的Flexbox支持有限,因此该按钮不在表单的右侧.我个人很高兴IE9用户可以看到下面的按钮.

我在这里使用了最小的造型.我已经离开了填充物以显示事物的边缘.显然你可以看看这个外观.

  • 这是最好的解决方案 (3认同)
  • 此解决方案不会在外部元素周围的焦点上显示蓝色边框。请参阅此处如何实现这一点:/sf/ask/2705134141/ (3认同)

Lar*_*sse 24

.flexContainer {
    display: flex;
}

.inputField {
    flex: 1;
}
Run Code Online (Sandbox Code Playgroud)
<div class="flexContainer">
    <input type="password" class="inputField">
    <button type="submit"><img src="arrow.png" alt="Arrow Icon"></button>
</div>
Run Code Online (Sandbox Code Playgroud)


Sah*_*pli 21

我找到了一个很棒的代码:

HTML

<form class="form-wrapper cf">
    <input type="text" placeholder="Search here..." required>
    <button type="submit">Search</button>
</form>
Run Code Online (Sandbox Code Playgroud)

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;
}    
Run Code Online (Sandbox Code Playgroud)

演示:小提琴 来源:Speckyboy

  • 代码的全部负载,根本没有解释......解决方案的主要思想是什么?为什么它有效?什么是可重复使用的作品? (6认同)
  • 有趣的事实:-9999px是你能走得最远的(afaicr) (5认同)
  • Alfo,当您在输入中获得大量文本时,文本与IE中的按钮重叠.这就是为什么这是公认的答案. (2认同)