样式绑定:class =“[]/{}“

样式绑定

对于一个相对美观的网站肯定离不开样式操作,Vue也提供了相关的样式处理,样式处无非是两种方式,一种是通过类名class来影响标签的样式,另外一种是直接操作标签的style属性从而定义标签的内部样式。这两种方式vue都支持。

  1. class样式处理
  • 对象语法
 <div v-bind:class = "{ active :isActive}"><div>
  • 数组语法
<div v-bind:class = "[activeClass,errorClass]"></div>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style type = "text/css">
        .active{
            border:1px solid red;
            width:100px;
            height:100px;
        }  
        .error {
            background-color: orange;
        }  
    </style>
</head>
<body>
    <div id = "app">
        <!-- 有时候希望样式被动态的控制 -->
        <!-- 类名以一个对象的方式 对象里面可以包含键值对-->
        <!-- 键值对的左边是类名 右边需要提供属性来控制类名是否显示-->
        <!-- 一般类名对应的属性是以is开头,作为标志位,要么truth要么false-->

        <div v-bind:class="{active: isActive,error: isError}">测试样式</div>
        <button v-on:click = "handle">切换</button>
    </div>
    <script src="vue.js"></script>
    <script>
        /*样式绑定*/
        var vm = new Vue({
            el:'#app',
            data: {
                isActive: true,
                isError:true
            },
            methods: {
                handle:function(){
                    // 控制isActive的值在true和false之间进行切换
                    this.isActive = !this.isActive;
                    this.isError = !this.isError;
                }
            }
        }) 
    </script>
</body>
</html>

在这里插入图片描述

在这里插入图片描述

样式的动态处理实际上就是控制类名是否添加到便签里面。
通过v-bind绑定class属性,它的值通过对象的方式,可以控制类名是否显示,如果后面的值是truth那类名就是显示的,如果是false那就是不显示。要想控制多个类名就在对象里边用,逗号分开,添加多个键值对

  • 数组语法
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style type = "text/css">
        .active{
            border:1px solid red;
            width:100px;
            height:100px;
        }  
        .error {
            background-color: orange;
        }  
    </style>
</head>
<body>
    <div id = "app">
        <!-- 有时候希望样式被动态的控制 -->
        <!-- 类名以一个对象的方式 对象里面可以包含键值对-->
        <!-- 键值对的左边是类名 右边需要提供属性来控制类名是否显示-->
        <!-- 一般类名对应的属性是以is开头,作为标志位,要么truth要么false-->

        <div v-bind:class="[activeClass,errorClass]">测试样式</div>
        <button v-on:click = "handle">切换</button> 
    </div>
    <script src="vue.js"></script>
    <script>
        /*样式绑定*/
        var vm = new Vue({
            el:'#app',
            data: {
                activeClass:'active',
                errorClass:'error'
            },
            methods: {
                handle:function(){
                    // 控制isActive的值在true和false之间进行切换
                    this.activeClass = "";
                    this.errorClass = "";
                }
            }
        }) 
    </script>
</body>
</html>

class样式处理数组语法中直接需要定义相关的属性,属性的值表示的是实例的类名,要想加多个类名的话就往数组里面加多个这样子的属性,他们的值都会作为最终的类名渲染到便签的class属性当中。

在 WPF 中,`UserControl` 是一种用于构建可重用 UI 组件的机制,允许开发者将多个控件组合成一个逻辑单元,并通过 XAML 定义其界面结构。一个典型的 `UserControl` XAML 文件通常包含 `x:Class`、`xmlns` 和命名空间声明等关键元素,这些元素共同定义了用户控件的结构和行为。 ### x:Class 属性 `x:Class` 是 XAML 中的一个属性,用于指定当前 XAML 文件关联的后台代码类。在 `UserControl` 中,`x:Class` 的值通常是命名空间加上类名的形式,例如 `MyNamespace.MyUserControl`。这个类必须继承自 `UserControl` 并且包含与 XAML 中定义的元素相对应的字段或属性。当 XAML 被编译时,编译器会生成一个部分类(partial class),并与 `x:Class` 指定的类合并,从而实现 XAML 和后台代码的绑定[^1]。 ### xmlns 命名空间声明 在 XAML 文件的根元素中,通常会有多个 `xmlns`(XML Namespace)声明,这些声明定义了不同命名空间的前缀,以便在 XAML 中引用各种类型和资源。 - `xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"`:这是 WPF 的默认命名空间,指向 WPF 提供的标准控件和资源集合。所有 WPF 内置控件(如 `Button`、`TextBox` 等)都属于这个命名空间,因此可以直接在 XAML 中使用而无需额外的前缀。 - `xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"`:这是 XAML 语言本身的命名空间,包含了 XAML 语言的核心功能,如 `x:Class`、`x:Name`、`x:Key` 等属性。这些属性用于定义 XAML 文件的元数据和资源管理[^2]。 ### 自定义命名空间的引用 除了默认的 WPF 和 XAML 命名空间外,开发者还可以引入自定义的命名空间,以便在 XAML 中使用项目中的其他类或控件。例如,假设有一个 DLL 文件 `MyLibrary.dll`,其中包含两个命名空间 `Common` 和 `Controls`,那么可以在 XAML 中通过以下方式引用这些命名空间: ```xml <UserControl x:Class="MyNamespace.MyUserControl" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:common="clr-namespace:Common;assembly=MyLibrary" xmlns:controls="clr-namespace:Controls;assembly=MyLibrary"> <!-- UserControl content --> </UserControl> ``` 在这个例子中,`xmlns:common` 和 `xmlns:controls` 分别将 `Common` 和 `Controls` 命名空间映射到 `common` 和 `controls` 前缀,这样就可以在 XAML 中通过 `common:MyClass` 或 `controls:MyControl` 的形式引用这些命名空间中的类或控件[^3]。 ### UserControl 的典型结构 一个完整的 `UserControl` XAML 文件通常包括以下几个部分: 1. **根元素**:根元素通常是 `<UserControl>` 标签,它包含了 `x:Class`、`xmlns` 和其他命名空间声明。 2. **资源定义**:在 `<UserControl.Resources>` 部分中,可以定义样式、模板、数据模板等资源,这些资源可以在整个 `UserControl` 中重复使用。 3. **布局容器**:通常使用 `Grid`、`StackPanel`、`DockPanel` 等布局控件来组织 UI 元素。 4. **控件和绑定**:具体的 UI 控件(如 `Button`、`TextBlock` 等)及其数据绑定表达式。 5. **事件处理**:通过 `x:Name` 和 `x:Key` 等属性为控件命名或分配键值,以便在后台代码中进行引用和操作。 下面是一个简单的 `UserControl` XAML 示例: ```xml <UserControl x:Class="MyNamespace.MyUserControl" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:common="clr-namespace:Common;assembly=MyLibrary" xmlns:controls="clr-namespace:Controls;assembly=MyLibrary"> <UserControl.Resources> <Style TargetType="Button" x:Key="CustomButtonStyle"> <Setter Property="Background" Value="LightBlue"/> <Setter Property="Padding" Value="10"/> </Style> </UserControl.Resources> <Grid> <StackPanel Orientation="Vertical" HorizontalAlignment="Center" VerticalAlignment="Center"> <TextBlock Text="Welcome to My UserControl!" FontSize="20" Margin="10"/> <Button Content="Click Me" Style="{StaticResource CustomButtonStyle}" Click="Button_Click"/> </StackPanel> </Grid> </UserControl> ``` 在这个示例中,`UserControl` 包含了一个简单的 UI,其中包括一个 `TextBlock` 和一个 `Button`。`Button` 使用了在 `<UserControl.Resources>` 中定义的样式,并且绑定了一个点击事件 `Click="Button_Click"`,该事件将在后台代码中实现。 ### 总结 `UserControl` 的 XAML 代码结构清晰地展示了如何通过 `x:Class`、`xmlns` 和命名空间声明来组织和管理 UI 元素。`x:Class` 用于关联 XAML 和后台代码,`xmlns` 定义了不同命名空间的前缀,而自定义命名空间的引用则允许开发者在 XAML 中使用项目中的其他类或控件。通过合理地组织这些元素,开发者可以创建出结构清晰、功能丰富的用户界面。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值