2016-09-12 18 views
11

Làm việc trên một dự án đang sử dụng thư viện Material-UI của các thành phần và tôi đã nhận được yêu cầu cho màu di chuột nút tùy chỉnh nằm ngoài quy ước bình thường của chủ đề MUI.Có thể thêm màu di chuột tùy chỉnh vào Nút được nâng lên không?

Tôi đã tìm thấy khối mã có liên quan này trong nguồn Nút được nâng lên, https://github.com/callemall/material-ui/blob/master/src/RaisedButton/RaisedButton.js#L98. Đặt nhãn tùy chỉnhColor thay đổi trạng thái di chuột, nhưng điều đó vẫn không đáp ứng nhu cầu hiện tại của tôi để có màu sắc của nút di chuột khác với màu của nhãn.

overlay: { 
    height: buttonHeight, 
    borderRadius: borderRadius, 
    backgroundColor: (state.keyboardFocused || state.hovered) && !disabled && 
    fade(labelColor, amount), 
    transition: transitions.easeOut(), 
    top: 0, 
}, 

Có cách nào để ghi đè màu nền lớp phủ theo cách khác để tôi có thể sử dụng màu tùy chỉnh riêng biệt không?

Để làm rõ, tôi đang tìm cách thực hiện việc này bằng cách tạo kiểu nội tuyến hoặc thông qua ghi đè trên nút. Việc thêm một lớp và sử dụng CSS bên ngoài không phải là một tùy chọn.

+0

Khi bạn nói, "không đáp ứng nhu cầu hiện tại của tôi" , bạn có thể làm rõ chính xác nhu cầu của bạn là gì không? Bạn cần phải có màu sắc nhãn và màu sắc di chuột để được những thứ khác nhau? – lawls544

+1

Có, màu nhãn cần phải khác màu nền của nút khi di chuột. – embolden

Trả lời

0

Tôi đã có thể giải quyết nó bằng cách đặt một thành phần className prop tới RaisedButton và chỉ định thuộc tính :hover trong css với chỉ thị !important.

Trong thành phần của bạn:

... 
<RaisedButton className="my-button" /> 
... 

Trong css của bạn:

.my-button :hover { 
    background-color: blue !important; 
} 
+0

Tôi đánh giá cao việc bạn dành thời gian trả lời. Tôi đã chỉnh sửa câu hỏi ban đầu của mình để làm rõ phương pháp mà tôi đang cố giải quyết vấn đề. Tôi tin rằng phương pháp này sẽ làm việc về mặt kỹ thuật nhưng tôi đang cố gắng thực hiện điều này bằng cách sử dụng cùng một quy ước như phần còn lại của dự án sẽ thiết lập kiểu dáng nội tuyến hoặc bằng cách ghi đè lên một thành phần. – embolden

+0

Gần đây tôi đã làm việc với material-ui và chúng tôi không thể thay đổi kiểu từ một điểm duy nhất. Đôi khi chúng tôi ghi đè chúng với chủ đề tùy chỉnh, đôi khi chúng tôi sử dụng kiểu nội tuyến và trong tùy chọn cuối cùng chúng tôi đã sử dụng phương pháp này. Chất liệu ui không linh hoạt khi nói đến việc thay đổi kiểu dáng. – kosker

-1

Bạn có thể sử dụng jquery để chỉ cần loại bỏ lớp và addClass

jQuery(document).ready(function($){ 
    $('#test').hover(
    function(){ $(this).addClass('redclass') }, 
    function(){ $(this).removeClass('overlay') } 
    ) 
}); 

'#test đại diện cho id và .test đại diện cho lớp của phần tử bạn đang cố gắng thao tác.

0

tôi đã sử dụng window.eventlistener cho các sự kiện nhấp chuột để ghi đè lên lớp của tôi

window.addEventListener("load",addClickHandlers,false); 
function addClickHandlers(event) { 
var someElement = document.getElementById("an_id"); 
someElement.addEventListener("click",myClickHandler,false); 
} 

function myClickHandler(event) { 
... do stuff ... 
} 
0

Đối với nút tăng sử dụng prop hoverColor này vì vậy nó sẽ là một cái gì đó giống như

<RaisedButton 
    label="Default" 
    hoverColor={"#00ff00"} 
/> 
0

Trong render chức năng của RaisedButton , đối tượng kiểu overlay được ghi đè với giá trị overlayStyle. (Đoạn trích có liên quan dưới đây).

<div 
    ref="overlay" 
    style={prepareStyles(Object.assign(styles.overlay, overlayStyle))} 
> 
    {enhancedButtonChildren} 
</div> 

Điều này có nghĩa bạn có thể đặt màu nền bằng cách thiết lập backgroundColor của overlayStyle prop. Tôi nghĩ rằng phần thứ hai của câu đố là đặt các sự kiện onMouseLeaveonMouseEnter và tự quản lý màu nền hiện tại bằng cách thay đổi màu sắc bất cứ khi nào chuột vào hoặc rời khỏi vùng nút.

Thật không may, có vẻ như các sự kiện tiêu điểm bàn phím không có móc được hiển thị trong API MaterialUI, vì vậy bạn sẽ không thể xử lý trường hợp đó mà không sửa đổi thư viện.

Đây có thể là điều đáng để gửi yêu cầu kéo đến MaterialUI nếu bạn đi tuyến sửa đổi thư viện.

0

giải pháp Khá dễ dàng:

.yourButtonClass{ 
    color: aColor !important; 
    &>span{ 
    color: anotherColor; 
    } 
} 

Bạn áp dụng màu sắc để nút của bạn mà thay đổi nhãn và màu overlay, và sau đó bạn đặt nhãn của bạn trong một khoảng mà bạn chỉ định màu nào bạn muốn văn bản được. Bằng cách đó nền, nhãn và lớp phủ của bạn có thể màu sắc khác nhau :)

cũng có thể được viết bằng các thuộc tính style của các thẻ tương ứng:

<md-button class="md-raised" style="color: aColor !important"> 
    <span style="color: anotherColor">yourLabel</span> 
</md-button> 
Các vấn đề liên quan