2015-05-13 42 views
8

triangleHình tam giác CSS trong React Native

Tôi đang làm việc trên ứng dụng sử dụng hình tam giác che phủ các vùng chứa/div khác. Đã giải quyết bằng CSS trước đây:

.triangle:after { 
    content: ""; 
    display: block; 
    position: absolute; 
    top: 15px; 
    left: -15px; 
    width: 0; 
    border-width: 0px 0px 15px 15px; 
    border-style: solid; 
} 

nhưng không hoạt động trong React nữa. Giải pháp tốt nhất để đi đến đây là gì?

+0

DOM được tạo sẽ kết thúc như thế nào? Có vẻ như điều đó nên vẫn hoạt động. –

Trả lời

0

Cách tốt nhất để làm điều này là tạo thành phần <Image> và hoàn toàn định vị nó, tương tự như cách bạn tạo tam giác CSS thuần túy. Nếu hình tam giác có màu phẳng, trái ngược với độ dốc hoặc hoa văn khác, bạn có thể đặt màu của hình tam giác bằng thuộc tính kiểu tintColor.

Ví dụ:

<Image 
    source={require('image!triangle')} 
    style={{tintColor: '#008080'}} 
/> 
+0

Vì vậy, tôi chỉ tạo ra một hình ảnh thực sự với một hình tam giác và tô màu nó bằng màu mà tôi cần? – Patrick

+1

Vâng, điều đó nên làm. – ide

13

Nó vẫn còn có thể vẽ hình tam giác trong Phản ứng Native bằng cách sử dụng thủ thuật CSS. Tôi đã viết một lớp để đóng gói này: https://github.com/Jpoliachik/react-native-triangle

Nếu bạn muốn viết nó cho mình, tôi sử dụng công cụ này: http://apps.eky.hk/css-triangle-generator/ để tạo ra hình tam giác tôi muốn và sửa đổi các phong cách để phản ứng cú pháp bản địa.

Ví dụ, một tam giác cân 90x90 hướng lên trong CSS đọc:

width: 0; 
height: 0; 
border-style: solid; 
border-width: 0 45px 90px 45px; 
border-color: transparent transparent #007bff transparent; 

Nhưng trong Phản ứng Native phong cách sẽ là:

triangle: { 
    width: 0, 
    height: 0, 
    backgroundColor: 'transparent', 
    borderStyle: 'solid', 
    borderTopWidth: 0, 
    borderRightWidth: 45, 
    borderBottomWidth: 90, 
    borderLeftWidth: 45, 
    borderTopColor: 'transparent', 
    borderRightColor: 'transparent', 
    borderBottomColor: 'red', 
    borderLeftColor: 'transparent', 
    }, 
+1

Cập nhật: Tính năng này hiện chỉ hoạt động cho iOS. Bản sửa lỗi cũng đang được hỗ trợ cho Android. https://github.com/facebook/react-native/issues/5411 – Jpoliachik

+2

Cập nhật khác: Android cũng hoạt động. – Jpoliachik