HTML / CSS Làm cách nào để thêm biểu tượng hình ảnh vào input type = “button”?


110

Tôi đang sử dụng CSS bên dưới, nhưng nó đặt một hình ảnh ở giữa nút. Có cách nào để căn trái hoặc phải một biểu tượng bằng cách sử dụng <input type="button">để văn bản và hình ảnh vừa vặn và căn chỉnh đẹp không?

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

Câu trả lời:


143

Nếu bạn nhất thiết phải sử dụng input, hãy thử điều này:

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

Thường dễ dàng hơn một chút khi sử dụng a buttonvới imgbên trong:

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

Tuy nhiên, việc triển khai trình duyệt của buttonđể gửi không nhất quán, cũng như thực tế là tất cả các giá trị nút được gửi khi buttonđược sử dụng - điều này sẽ giết chết tính năng phát hiện "nút nào được nhấp" trong biểu mẫu gửi nhiều lần.


không cần phải làm, nhưng tôi ở đây thẻ nút bị lỗi ở tức là 6 hoặc hoạt động khác nhau trong một số trình duyệt?
Brett

Theo như tôi đã trải nghiệm, button(với kiểu submit) hoạt động giống hệt nhau input, ngoại trừ việc cho phép các phần tử bên trong (thay vì chỉ các kiểu được áp dụng cho nó).
Delan Azabani

8
Phần 'lỗi' trong <button>việc triển khai của IE xuất phát từ thực tế là 1) trên POST / GET, nó gửi 'giá trị' cho mọi nút chứ không chỉ cho nút được nhấp và 2) Thay vì gửi valuethuộc tính thực , IE thích để gửi nội dung (HTML bên trong) của nút. Những dữ kiện này làm cho <button>thẻ không đáng tin cậy nếu hành động được thực hiện phụ thuộc vào nút mà người dùng đã nhấp vào.
Duroth

Điểm tuyệt vời, Duroth. Vâng, đó chắc chắn là một cú hích cho những thứ như biểu mẫu bài đăng chỉnh sửa có "Xem trước" và "Gửi", v.v.
Delan Azabani

3
Bạn có thể sử dụng <button><input type=button>thay thế cho nhau. Nếu bạn không muốn <button> gửi trong IE, hãy đặt kiểu của nó như sau:<button type="button">Text</button>
Darcy 12/01

74

Điều này sẽ làm những gì bạn muốn, giả sử hình ảnh nút của bạn là 16 x 16 pixel.

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

Nút ví dụ:

nút ví dụ

Cập nhật

Nếu bạn tình cờ sử dụng Ít, hỗn hợp này có thể hữu ích.

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

Phần trên biên dịch thành

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


bạn không cần dấu ngoặc kép trong đối số của phương thức url ()?
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>

Tôi hy vọng cái này sẽ giúp bạn.


2

Nếu bạn đang sử dụng spritesheets, điều này trở nên không thể và phần tử phải được bao bọc.

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

Kiểm tra trò chơi này: http://jsfiddle.net/AJNnZ/


1

bạn có thể thử thủ thuật này!

Thứ nhất) làm điều này:

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

Thứ 2) phong cách nó!

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

Nó không sạch nhưng nó sẽ thực hiện công việc!


1

Chỉ cần thêm biểu tượng vào phần tử nút đây là ví dụ

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


0

Những gì tôi sẽ làm là làm điều này:

Sử dụng một loại nút

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

Tôi đã sử dụng background-color: rgba (255,255,255,0.0); Sao cho màu nền ban đầu của nút biến mất. Tương tự với đường viền: không có; nó sẽ lấy đi đường viền ban đầu.


0

Đây là kiểu tối thiểu cần thiết, vừa vặn hình ảnh với kích thước nút mặc định:

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

giá trị "khoảng cách" là cần thiết để giữ căn chỉnh đường cơ sở, đề phòng trường hợp bạn cần ...


0

câu trả lời của sshow cũng làm được điều đó cho tôi:

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>

[...]

Tôi đã thử nghiệm điều này thành công trong các phiên bản mới nhất của Firefox và Chrome (kể từ ngày 9 tháng 2 năm 2019).


0

Nó trông như thế nào

Điều này hoạt động tốt đối với tôi và tôi cũng đang xử lý di chuột và nhấp vào CSS (bằng cách thay đổi màu nền):

HTML (ở đây hiển thị 2 hình ảnh, image1 trên đầu image2):

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

CSS (hình ảnh của tôi có kích thước 32px X 32px, vì vậy tôi đã cho chúng 4px để đệm và làm tròn đường viền 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;
}

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

xin vui lòng thêm một lời giải thích cho câu trả lời của bạn.
warunapww

Cần dấu ">" để đóng thẻ img.
harrypujols

1
Tại sao bạn sử dụng PHP?
Top Cat
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.