الفرق بين المراجعتين لصفحة: «ReactNative/shadow props»

من موسوعة حسوب
طلا ملخص تعديل
طلا ملخص تعديل
 
(1 مراجعات متوسطة بواسطة نفس المستخدم غير معروضة)
سطر 1: سطر 1:
<noinclude>{{DISPLAYTITLE:Shadow Props في React Native}}</noinclude>
<noinclude>{{DISPLAYTITLE:خاصيات الظل (Shadow Props) في React Native}}</noinclude>
__toc__
خاصيات الظل (Shadow Props) لمكونات React Native.
 
== مثال ==
== مثال ==
<syntaxhighlight lang="javascript">
إليك المثال التالي ([https://snack.expo.dev/@hsoubwiki/shadow-props تجربة حية]):<syntaxhighlight lang="javascript">
import React, { useState } from "react";
import React, { useState } from "react";
import { Text, View, StyleSheet, Slider } from "react-native";
import { Text, View, StyleSheet, Slider } from "react-native";
 
const ShadowPropSlider = ({ label, value, ...props }) => {
const ShadowPropSlider = ({ label, value, ...props }) => {
 return (
  return (
   <>
    <>
     <Text>
      <Text>
       {label} ({value.toFixed(2)})
        {label} ({value.toFixed(2)})
     </Text>
      </Text>
     <Slider step={1} value={value} {...props} />
      <Slider step={1} value={value} {...props} />
   </>
    </>
   );
   );
}
}
 
const App = () => {
const App = () => {
 const [shadowOffsetWidth, setShadowOffsetWidth] = useState(0);
  const [shadowOffsetWidth, setShadowOffsetWidth] = useState(0);
 const [shadowOffsetHeight, setShadowOffsetHeight] = useState(0);
  const [shadowOffsetHeight, setShadowOffsetHeight] = useState(0);
 const [shadowRadius, setShadowRadius] = useState(0);
  const [shadowRadius, setShadowRadius] = useState(0);
 const [shadowOpacity, setShadowOpacity] = useState(0.1);
  const [shadowOpacity, setShadowOpacity] = useState(0.1);
 
 return (
  return (
   <View style={styles.container}>
    <View style={styles.container}>
     <View
      <View
       style={[
        style={[
         styles.square,
          styles.square,
         {
          {
           shadowOffset: {
            shadowOffset: {
             width: shadowOffsetWidth,
              width: shadowOffsetWidth,
             height: -shadowOffsetHeight
              height: -shadowOffsetHeight
           },
            },
           shadowOpacity,
            shadowOpacity,
           shadowRadius
            shadowRadius
         }
          }
       ]}
        ]}
     />
      />
     <View style={styles.controls}>
      <View style={styles.controls}>
       <ShadowPropSlider
        <ShadowPropSlider
         label="shadowOffset - X"
          label="shadowOffset - X"
         minimumValue={-50}
          minimumValue={-50}
         maximumValue={50}
          maximumValue={50}
         value={shadowOffsetWidth}
          value={shadowOffsetWidth}
         onValueChange={val => setShadowOffsetWidth(val)}
          onValueChange={val => setShadowOffsetWidth(val)}
       />
        />
       <ShadowPropSlider
        <ShadowPropSlider
         label="shadowOffset - Y"
          label="shadowOffset - Y"
         minimumValue={-50}
          minimumValue={-50}
         maximumValue={50}
          maximumValue={50}
         value={shadowOffsetHeight}
          value={shadowOffsetHeight}
         onValueChange={val => setShadowOffsetHeight(val)}
          onValueChange={val => setShadowOffsetHeight(val)}
       />
        />
       <ShadowPropSlider
        <ShadowPropSlider
         label="shadowRadius"
          label="shadowRadius"
         minimumValue={0}
          minimumValue={0}
         maximumValue={100}
          maximumValue={100}
         value={shadowRadius}
          value={shadowRadius}
         onValueChange={val => setShadowRadius(val)}
          onValueChange={val => setShadowRadius(val)}
       />
        />
       <ShadowPropSlider
        <ShadowPropSlider
         label="shadowOpacity"
          label="shadowOpacity"
         minimumValue={0}
          minimumValue={0}
         maximumValue={1}
          maximumValue={1}
         step={0.05}
          step={0.05}
         value={shadowOpacity}
          value={shadowOpacity}
         onValueChange={val => setShadowOpacity(val)}
          onValueChange={val => setShadowOpacity(val)}
       />
        />
     </View>
      </View>
   </View>
    </View>
   );
   );
}
}
 
const styles = StyleSheet.create({
const styles = StyleSheet.create({
 container: {
  container: {
   flex: 1,
    flex: 1,
   justifyContent: "space-around",
    justifyContent: "space-around",
   backgroundColor: "#ecf0f1",
    backgroundColor: "#ecf0f1",
   padding: 8
    padding: 8
   },
   },
 square: {
  square: {
   alignSelf: "center",
    alignSelf: "center",
   backgroundColor: "white",
    backgroundColor: "white",
   borderRadius: 4,
    borderRadius: 4,
   height: 150,
    height: 150,
   shadowColor: "black",
    shadowColor: "black",
   width: 150
    width: 150
   },
   },
 controls: {
  controls: {
   paddingHorizontal: 12
    paddingHorizontal: 12
   }
   }
});
});
 
export default App;
export default App;
</syntaxhighlight>
</syntaxhighlight>


== الخاصيات (Props) ==
== الخاصيات (Props) ==
هذه الخاصيّات لمنصّة iOS فقط، ويمكن استخدام الخاصّية [[ReactNative/view style props#elevation|elevation]]  لمنصّة Android للحصول على خاصّياتٍ مماثلةٍ.
=== <code>shadowColor</code> ===
=== <code>shadowColor</code> ===
تُستخدم هذه الخاصيّة لتحديد لون [[ReactNative/colors|color]] الظّل الهابط (drop shadow).
تُستخدم هذه الخاصيّة لتحديد لون [[ReactNative/colors|color]] الظّل الهابط (drop shadow).
هذه الخاصية ستعمل على الإصدار 28 من واجهة منصة Android، ويمكن استخدام الخاصّية [[ReactNative/view style props#elevation|elevation]]  لإصدارات سابقة.
{| class="wikitable"
{| class="wikitable"
!النوع
!النوع
!مطلوب
!مطلوب
!المنصة
|-
|-
|لون ([[ReactNative/colors|color]])
|لون ([[ReactNative/colors|color]])
|لا
|لا
|iOS
|}
|}


سطر 118: سطر 117:
!المنصة
!المنصة
|-
|-
|كائن ‪‏object:<code>{width:number,height:number}</code>
|كائن <code>{width:number,height:number}</code>
|لا
|لا
|iOS
|iOS
سطر 151: سطر 150:
* [https://facebook.github.io/react-native/docs/shadow-props صفحة Shadow Props في توثيق React Native الرسميّ]
* [https://facebook.github.io/react-native/docs/shadow-props صفحة Shadow Props في توثيق React Native الرسميّ]
[[تصنيف:ReactNative]]
[[تصنيف:ReactNative]]
[[تصنيف:React Native Component]]

المراجعة الحالية بتاريخ 14:05، 9 أكتوبر 2021

خاصيات الظل (Shadow Props) لمكونات React Native.

مثال

إليك المثال التالي (تجربة حية):

import React, { useState } from "react";
import { Text, View, StyleSheet, Slider } from "react-native";

const ShadowPropSlider = ({ label, value, ...props }) => {
  return (
    <>
      <Text>
        {label} ({value.toFixed(2)})
      </Text>
      <Slider step={1} value={value} {...props} />
    </>
  );
}

const App = () => {
  const [shadowOffsetWidth, setShadowOffsetWidth] = useState(0);
  const [shadowOffsetHeight, setShadowOffsetHeight] = useState(0);
  const [shadowRadius, setShadowRadius] = useState(0);
  const [shadowOpacity, setShadowOpacity] = useState(0.1);

  return (
    <View style={styles.container}>
      <View
        style={[
          styles.square,
          {
            shadowOffset: {
              width: shadowOffsetWidth,
              height: -shadowOffsetHeight
            },
            shadowOpacity,
            shadowRadius
          }
        ]}
      />
      <View style={styles.controls}>
        <ShadowPropSlider
          label="shadowOffset - X"
          minimumValue={-50}
          maximumValue={50}
          value={shadowOffsetWidth}
          onValueChange={val => setShadowOffsetWidth(val)}
        />
        <ShadowPropSlider
          label="shadowOffset - Y"
          minimumValue={-50}
          maximumValue={50}
          value={shadowOffsetHeight}
          onValueChange={val => setShadowOffsetHeight(val)}
        />
        <ShadowPropSlider
          label="shadowRadius"
          minimumValue={0}
          maximumValue={100}
          value={shadowRadius}
          onValueChange={val => setShadowRadius(val)}
        />
        <ShadowPropSlider
          label="shadowOpacity"
          minimumValue={0}
          maximumValue={1}
          step={0.05}
          value={shadowOpacity}
          onValueChange={val => setShadowOpacity(val)}
        />
      </View>
    </View>
  );
}

const styles = StyleSheet.create({
  container: {
    flex: 1,
    justifyContent: "space-around",
    backgroundColor: "#ecf0f1",
    padding: 8
  },
  square: {
    alignSelf: "center",
    backgroundColor: "white",
    borderRadius: 4,
    height: 150,
    shadowColor: "black",
    width: 150
  },
  controls: {
    paddingHorizontal: 12
  }
});

export default App;

الخاصيات (Props)

shadowColor

تُستخدم هذه الخاصيّة لتحديد لون color الظّل الهابط (drop shadow).

هذه الخاصية ستعمل على الإصدار 28 من واجهة منصة Android، ويمكن استخدام الخاصّية elevation لإصدارات سابقة.

النوع مطلوب
لون (color) لا

shadowOffset

تُستخدم لتحديد إزاحة (offset) الظلّ الهابط.

النوع مطلوب المنصة
كائن {width:number,height:number} لا iOS

shadowOpacity

تُستخدم لتحديد مدى عَتْمَة الظل الهابط (مضروبًا بالعنصر alpha الخاصّ باللّون).

النوع مطلوب المنصة
عدد (number) لا iOS

shadowRadius

تُستخدم لتحديد نصف قطر ضبابية (blur) الظل الهابط.

النوع مطلوب المنصة
عدد (number) لا iOS

مصادر