Nhúng hình ảnh trong phần tử <button>


135

Tôi đang cố gắng hiển thị hình ảnh png trên một thành <button>phần trong HTML. Nút có cùng kích thước với hình ảnh và hình ảnh được hiển thị nhưng vì một số lý do không nằm ở trung tâm - vì vậy không thể nhìn thấy tất cả. Nói cách khác, có vẻ như góc trên cùng bên phải của hình ảnh nằm ở trung tâm của nút chứ không phải ở góc trên cùng bên phải của nút.

Đây là mã HTML:

<button id="close" class="closing" onClick="javascript:close_clip()"><img src="icons/close.png" /></button>

Cập nhật:
Những gì thực sự xảy ra, tôi nghĩ, là một vấn đề lề. Tôi nhận được một lề hai pixel, vì vậy hình ảnh nền sẽ ra khỏi nút. Các nút và các hình ảnh có cùng kích thước, mà chỉ là 20px, vì vậy nó rất đáng chú ý ... tôi đã cố gắng margin:0, padding:0nhưng nó đã không thể giúp ích ...


Đối với tôi, nó hoạt động hoàn hảo ... đó là bối cảnh trong bạn đang trải nghiệm điều này? Có thể gửi thêm một vài dòng mã?

3
Bạn có thể sao chép điều này trên một trang web trực tiếp, chẳng hạn như JS Fiddle để chúng tôi xem điều gì đang xảy ra không?
David nói phục hồi Monica

Câu trả lời:


188

Bạn có thể sử dụng hình ảnh loại đầu vào.

<input type="image" src="http://example.com/path/to/image.png" />

Nó hoạt động như một nút và có thể có các trình xử lý sự kiện gắn liền với nó.

Ngoài ra, bạn có thể sử dụng css để tạo kiểu cho nút của mình bằng hình nền và đặt đường viền, lề và những thứ tương tự.

<button style="background: url(myimage.png)" ... />

1
... Và không cần JavaScript để gửi biểu mẫu.
ComFalet

6
-1: " Nên " là một thuật ngữ quá mạnh, vì đây không thực sự <input type="image">là những gì được thiết kế cho. Tại sao bạn không đề xuất CSS?
Wesley Murch

Tôi thích sử dụng một nút. Nếu tôi không tìm thấy câu trả lời, tôi sẽ làm điều đó. cảm ơn
Amit Hagin

Sau đó, phong cách nó, như đã lưu ý trong điều này và câu trả lời khác.
Andrew Barber

3
Đừng quên rằng cả hai thẻ kết thúc bắt đầu đều được yêu cầu cho phần tử nút, vì vậy về mặt kỹ thuật <button /> không hợp lệ, nó phải là <button> </ button>.
Tamas Czinege

66

Nếu hình ảnh là một phần của dữ liệu ngữ nghĩa (ví dụ như ảnh hồ sơ), thì hãy sử dụng một <img>yếu tố bên trong bạn <button>và sử dụng CSS để thay đổi kích thước <img>. Nếu hình ảnh chỉ là một cách để làm cho một nút dễ nhìn, hãy sử dụng CSS background-imageđể tạo kiểu cho <button>(và không sử dụng một <img>).

Bản giới thiệu: http://jsfiddle.net/ThinkingStiff/V5Xqr/

HTML:

<button id="close-image"><img src="http://thinkingstiff.com/images/matt.jpg"></button>
<button id="close-CSS"></button>

CSS:

button {
    display: inline-block;
    height: 134px;
    padding: 0;
    margin: 0;
    vertical-align: top;
    width: 104px;
}

#close-image img {
    display: block;
    height: 130px;  
    width: 100px;
}

#close-CSS {
    background-image: url( 'http://thinkingstiff.com/images/matt.jpg' );
    background-size: 100px 130px;
    height: 134px;  
    width: 104px;
}

Đầu ra:

nhập mô tả hình ảnh ở đây


@ThinkingStiff <image>yếu tố? Tôi nghĩ bạn có nghĩa là <img>trong văn bản của bạn;)
ComFalet

cảm ơn vì câu trả lời tốt !! nhưng vấn đề vẫn còn ... Tôi đã cập nhật câu hỏi một chút - có lẽ nó có thể giúp bạn hiểu về nó.
Amit Hagin

@AmitHagin Tôi thấy cập nhật của bạn. Hãy nhớ một nút có viền, được bao gồm trong tính toán chiều cao của nó. Vì vậy, để phù hợp với một 20pxhình ảnh cao, chiều cao nút sẽ phải được 24px.
ThinkingStiff

@AmitHagin Ngoài ra, để ngăn chặn các vấn đề về khoảng trắng, hãy thay đổi <img>thành display: block;. Tôi đã cập nhật liên kết demo để hiển thị điều này.
ThinkingStiff

Có bất kỳ mối quan tâm về văn bản accessiblity / alt với phương pháp này? Tôi thực sự hoen gỉ, nhưng việc ẩn văn bản bằng cách bù đắp cho nó vài nghìn pixel vẫn là cách giải quyết được chấp nhận?
Rob Drimmie

10

thử cái này

   <input type="button" style="background-image:url('your_url')"/>

10

Cách đơn giản nhất để đặt một hình ảnh vào một nút:

<button onclick="myFunction()"><img src="your image name here.png"></button>

Điều này sẽ tự động thay đổi kích thước nút theo kích thước của hình ảnh.


4

Tại sao bạn không sử dụng hình ảnh với onclick thuộc tính?

Ví dụ:

<script>
function myfunction() {
}
</script>
<img src='Myimg.jpg' onclick='myfunction()'>

0

Thêm thư mục mới với tên của hình ảnh trong dự án của bạn. Đặt một số hình ảnh vào thư mục Hình ảnh. Sau đó, nó sẽ hoạt động tốt.

<input type="image" src="~/Images/Desert.jpg" alt="Submit" width="48" height="48">

0

Hãy thử thích định dạng này và sử dụng thuộc tính "width" để quản lý kích thước hình ảnh, thật đơn giản. JavaScript cũng có thể được thực hiện trong phần tử.

<button><img src=""></button>


-7

Các nút không hỗ trợ trực tiếp hình ảnh. Ngoài ra, cách bạn đang làm là dành cho các liên kết ()

Hình ảnh được thêm vào qua các nút bằng cách sử dụng thuộc tính BACKGROUND-IMAGE

bạn cũng có thể chỉ định lặp lại và các thuộc tính khác bằng cách sử dụng thẻ

Ví dụ: một hình ảnh cơ bản được thêm vào một nút sẽ có mã này:

    <button style="background-image:url(myImage.png)">

Sự thanh bình


2
Câu trả lời của bạn không chính xác, tài liệu chính thức nói rằng nó được cho phép.
biphobe
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.