HTML / CSS Giriş türü = "düğme" için resim simgesi nasıl eklenir?


110

Aşağıdaki CSS'yi kullanıyorum, ancak düğmenin ortasına bir resim koyuyor. <input type="button">Metnin ve görüntünün güzelce sığması ve hizalanması için bir simgeyi kullanarak sola veya sağa hizalamanın herhangi bir yolu var mı?

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

Yanıtlar:


143

Kesinlikle kullanmanız gerekiyorsa input, şunu deneyin:

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

Genellikle buttonbir imgiç ile kullanmak biraz daha kolaydır :

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

Bununla birlikte, buttongönderme için tarayıcı uygulamaları tutarsızdır ve ayrıca tüm düğme değerlerinin kullanıldığında gönderilir button- bu da çoklu gönderim formundaki "hangi düğme tıklandı" algılamasını ortadan kaldırır.


zorunda değil, ama buradayım buton etiketi ie 6'da hatalı mı yoksa bazı tarayıcılarda farklı davranıyor mu?
Brett

Tecrübe ettiğim kadarıyla, button( submittürle) input, öğelerin içeriye izin vermesi dışında (sadece ona uygulanan stiller yerine ) aynı şekilde çalışır .
Delan Azabani

8
IE'nin <button>uygulamasının 'buggy' kısmı, 1) bir POST / GET'de, yalnızca tıklanan değil, her düğme için 'değerleri' göndermesi ve 2) Gerçek valueözniteliği göndermek yerine , IE beğenir düğmenin içeriğini (iç HTML) göndermek için. Bu gerçekler, <button>yapılan işlem kullanıcının tıkladığı düğmeye bağlıysa etiketi güvenilmez kılar .
Duroth

Harika nokta Duroth. Evet, bu kesinlikle "Önizleme" ve "Gönderme" vb.
İçeren

3
Kullanabilir <button>ve <input type=button>birbirinin yerine kullanabilirsiniz . IE'de <button> 'un gönderilmesini istemiyorsanız, türünü şu şekilde ayarlayın:<button type="button">Text</button>
Darcy

74

Bu, düğme görüntünüzün 16x16 piksel olduğunu varsayarak, istediğinizi yapmalıdır.

<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 */
}

Örnek düğme:

örnek düğme

Güncelleme

Less'i kullanırsanız, bu mixin kullanışlı olabilir.

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

Yukarıdakiler derlenir

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


url () yönteminin argümanında alıntılara ihtiyacınız yok mu?
ecbrodie


10
<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>

Umarım bu sana yardımcı olur.


2

Hareketli grafik sayfaları kullanıyorsanız, bu imkansız hale gelir ve öğenin sarmalanması gerekir.

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

Bu kemana bir göz atın: http://jsfiddle.net/AJNnZ/


1

bu numarayı deneyebilirsiniz!

1) şunu yapın:

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

2.) biçimlendirin!

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

Temiz değil ama işi yapacak!


1

Düğme öğesine basitçe simge ekleyin, işte örnek

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


0

Yapacağım şey şunu yapmak:

Bir düğme türü kullanın

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

Arka plan rengi kullandım: rgba (255,255,255,0.0); Böylece bir düğmenin orijinal arka plan rengi kaybolur. Sınır için de aynı: yok; orijinal sınırı ortadan kaldıracaktır.


0

Bu, görüntüyü varsayılan düğme boyutuna sığdırmak için gereken minimum stildir:

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

"aralıklı" değer, temel hizalamayı korumak için gereklidir, her ihtimale karşı ...


0

sshow'un cevabı benim için de yaptı:

navigation.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, 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>

[...]

Bunu Firefox ve Chrome'un en son sürümlerinde (9 Şubat 2019 itibarıyla) başarıyla test ettim.


0

Ne gibi görünüyor

Bu benim için iyi çalışıyor ve fareyle üzerine gelip CSS'yi de kullanıyorum (arka plan rengini değiştirerek):

HTML (burada 2 resim gösterilir, image1, image2'nin üstünde):

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

CSS (resimlerim 32px X 32px, bu yüzden onlara dolgu için 4px ve 5px kenarlık yuvarlama verdim):

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

-2
<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>

lütfen cevabınıza bir açıklama ekleyin.
warunapww

İmg etiketini kapatmak için ">" gerekir.
harrypujols

1
Neden PHP kullanıyorsunuz?
Top Cat
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.