简体   繁体   English

HTML / CSS 如何将图像图标添加到 input type="button"?

[英]HTML / CSS How to add image icon to input type=“button”?

I'm using the below CSS, but it puts an image in the center of the button.我正在使用下面的 CSS,但它在按钮的中心放置了一个图像。 Any way to left or right align an icon using <input type="button"> , so that the text and the image fit and align nicely?任何使用<input type="button">左对齐或右对齐图标的方法,以便文本和图像适合并很好地对齐?

background: url('/common/assets/images/icons/16x16/add.png');
background-position:center;
background-repeat:no-repeat;

If you absolutely must use input , try this:如果您绝对必须使用input ,请尝试以下操作:

background-image: url(...);
background-repeat: no-repeat;
background-position: <left|right>;
padding-<left|right>: <width of image>px;

It's usually a little easier to use a button with an img inside:使用带有imgbutton通常会更容易一些:

<button type="submit"><img> Text</button>

However the browser implementations of button for submitting are inconsistent, as well as the fact that all button values are sent when button is used - which kills the "what button clicked" detection in a multi-submit form.然而的浏览器实现button提交不一致,以及一个事实,即当所有的按键值发送button使用-杀死在多提交表单的“按下哪个按钮”检测。

This should do do what you want, assuming your button image is 16 by 16 pixels.这应该做你想做的,假设你的按钮图像是 16 x 16 像素。

<input type="button" value="Add a new row" class="button-add" />
input.button-add {
    background-image: url(/images/buttons/add.png); /* 16px x 16px */
    background-color: transparent; /* make the button transparent */
    background-repeat: no-repeat;  /* make the background image appear only once */
    background-position: 0px 0px;  /* equivalent to 'top left' */
    border: none;           /* assuming we don't want any borders */
    cursor: pointer;        /* make the cursor like hovering over an <a> element */
    height: 16px;           /* make this the size of your image */
    padding-left: 16px;     /* make text start to the right of the image */
    vertical-align: middle; /* align the text vertically centered */
}

Example button:示例按钮:

示例按钮

Update更新

If you happen to use Less, this mixin might come in handy.如果您碰巧使用 Less,这个 mixin 可能会派上用场。

.icon-button(@icon-url, @icon-size: 16px, @icon-inset: 10px, @border-color: #000, @background-color: transparent) {
    height: @icon-size * 2;
    padding-left: @icon-size + @icon-inset * 2;
    padding-right: @icon-inset;
    border: 1px solid @border-color;
    background: @background-color url(@icon-url) no-repeat @icon-inset center;
    cursor: pointer;
}

input.button-add {
    .icon-button("http://placehold.it/16x16", @background-color: #ff9900);
}

The above compiles into以上编译成

input.button-add {
  height: 32px;
  padding-left: 36px;
  padding-right: 10px;
  border: 1px solid #000000;
  background: #ff9900 url("http://placehold.it/16x16") no-repeat 10px center;
  cursor: pointer;
}

JSFiddle JSFiddle

<button type="submit" style="background-color:transparent; border-color:transparent;"> 
  <img src="images/button/masuk.png" height="35"/>
</button>
<button type="reset" style="background-color:transparent; border-color:transparent;"> 
  <img src="images/button/reset.png" height="35"/>
</button>

I hope this helps you.我希望这可以帮助你。

If you're using spritesheets this becomes impossible and the element must be wrapped.如果您使用 spritesheets,这将变得不可能,并且元素必须被包裹。

.btn{
    display: inline-block;
    background: blue;
    position: relative;
    border-radius: 5px;
}
.input, .btn:after{
    color: #fff;
}
.btn:after{
    position: absolute;
    content: '@';
    right: 0;
    width: 1.3em;
    height: 1em;
}
.input{
    background: transparent;
    color: #fff;
    border: 0;
    padding-right: 20px;
    cursor: pointer;
    position: relative;
    padding: 5px 20px 5px 5px;
    z-index: 1;
}

Check out this fiddle: http://jsfiddle.net/AJNnZ/看看这个小提琴: http : //jsfiddle.net/AJNnZ/

you can try this trick!你可以试试这个技巧!

1st) do this: 1)这样做:

<label for="img">
   <input type="submit" name="submit" id="img" value="img-btn">
   <img src="yourimage.jpg" id="img">
</label>

2nd) style it! 2)风格吧!

<style type="text/css">
   img:hover {
       cursor: pointer;
   }
   input[type=submit] {
       display: none;
   }
</style>

It is not clean but it will do the job!它不干净,但它可以完成工作!

Simply add icon in button element here is the example只需在按钮元素中添加图标,这里就是示例

   <button class="social-signup facebook"> 
     <i class="fa fa-facebook-official"></i>  
      Sign up with Facebook</button>

您可以尝试在按钮内插入图像http://jsfiddle.net/s5GVh/1415/

<button type="submit"><img src='https://aca5.accela.com/bcc/app_themesDefault/assets/gsearch_disabled.png'/></button>

This is the minimal style needed, fitting the image to the default button size:这是所需的最小样式,使图像适合默认按钮大小:

 <input type="button" value=" " style="background-image: url(http://www.geppoz.eu/geppoz.png);background-size:100% 100%;">

the "spaced" value is needed to keep baseline alignment, just in case you need it...需要“间隔”值来保持基线对齐,以防万一你需要它......

What I would do is do this:我会做的是这样做:

Use a button type使用按钮类型

 <button type="submit" style="background-color:rgba(255,255,255,0.0); border:none;" id="resultButton" onclick="showResults();"><img src="images/search.png" /></button>

I used background-color:rgba(255,255,255,0.0);我使用了背景颜色:rgba(255,255,255,0.0); So that the original background color of a button goes away.这样按钮的原始背景颜色就会消失。 The same with the border:none;与边界相同:无; it will take the original border away.它会带走原来的边界。

sshow's answer did it for me, too: sshow 的回答也为我做了:

navigation.css :导航.css

[...]

.buttonConfiguration {
    width: 40px;
    background-color: red; /* transparent; */
    border: none;
    color: white;
    padding: 5px 10px;
    text-align: center;
    text-decoration: none;
    display: inline-block;
    font-family: corbel;
    font-size: 12px;
    font-weight: normal;
    margin: 1px 1px;
    cursor: pointer;

    background-image: url('../images/icons5/gear_16.png');
    background-position: center; /* 0px 0px; */
    background-repeat: no-repeat;
    vertical-align: middle;
}

[...]

frameMenu.php :框架菜单.php :

[... PHP, Javascript and HTML code ...]

<!-- <li><a target="frameBody" href="admin/conf/confFunctions.php"><input type="button" class="buttonSuperAdmin" value="<?= $oLanguage->getExpression('confSettings', 'title', 'C e n t e r s') ?>"></a> -->
<li><a target="frameBody" href="admin/conf/confFunctions.php"><input type="button" class="buttonConfiguration" value=""></a>
<ul>
<li><a target="frameBody" href="admin/conf/getglobals.php "><input type="button" class="buttonSuperAdminSub" value="<?= $oLanguage->getExpression('centerSettings', 'confAdmin1', 'GetGlobals') ?>"></a></li>
<li><a target="frameBody" href="admin/conf/getcwd.php "><input type="button" class="buttonSuperAdminSub" value="<?= $oLanguage->getExpression('confSettings', 'centerAdmin2', 'GetCWD') ?>"></a></li>
</ul>
</li>

[...]

I have tested this successfully under the lastest versions of Firefox and Chrome (as of February 9th, 2019).我已经在最新版本的 Firefox 和 Chrome 下成功测试了这一点(截至 2019 年 2 月 9 日)。

它看起来像什么

This works well for me, and I'm handling hover and click CSS as well (by changing background color):这对我来说效果很好,我也在处理悬停和单击 CSS(通过更改背景颜色):

HTML (here showing 2 images, image1 on top of image2): HTML(此处显示 2 张图片,图片 1 位于图片 2 之上):

<button class="iconButton" style="background-image: url('image1.png'), url('image2.png')"
  onclick="alert('clicked');"></button>

CSS (my images are 32px X 32px, so I gave them 4px for padding and a 5px border rounding): CSS(我的图像是 32px X 32px,所以我给了它们 4px 的填充和 5px 的边框):

.iconButton {
    width: 36px;
    height: 36px;
    background-color: #000000;
    background-position: center;
    background-repeat: no-repeat;
    border: none;
    border-radius: 5px;
    cursor: pointer;
    outline: none;
}

.iconButton:hover {
    background-color: #303030;
}

.iconButton:active {
    background-color: #606060;
}

button::-moz-focus-inner {
    border: 0;
}
<img src="http://www.pic4ever.com/images/2mpe5id.gif">
            <button class="btn btn-<?php echo $settings["button_background"]; ?>" type="submit"><?php echo $settings["submit_button_text"]; ?></button>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM