zoukankan      html  css  js  c++  java
  • Vue小练习 03

    """
    1、有以下广告数据(实际数据命名可以略做调整)
    ad_data = {
    		tv: [
                    {img: 'img/tv/tv1.jpg', title: 'tv1'},
                    {img: 'img/tv/tv2.jpg', title: 'tv2'},
                    {img: 'img/tv/tv3.jpg', title: 'tv3'},
                    {img: 'img/tv/tv4.jpg', title: 'tv4'},
                ],
                phone: [
                    {img: 'img/phone/phone1.jpg', title: 'phone1'},
                    {img: 'img/phone/phone2.jpg', title: 'phone2'},
                    {img: 'img/phone/phone3.jpg', title: 'phone3'},
                    {img: 'img/phone/phone4.jpg', title: 'phone4'},
                ]
    	
    }
    
    i) 有两个大标题,电视和手机,点击对应的标题,渲染对应的数据
    ii) 一个字典作为一个显示单位,定义一个子组件进行渲染(涉及父子组件传参)
    
    2、在第1题基础上,页面最下方有一个 h2 标签,用来渲染用户当前选择的广告(点击哪个广告就是选中哪个广告)
    i)当没有点击任何广告,h2 标签显示:未选中任何广告
    ii)当点击其中一个广告,如tv1,h2 标签显示:tv1被选中
    """
    
    
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>作业1</title>
        <style>
            body, h2 {
                margin: 0;
            }
            .wrap {
                 880px;
                margin: 0 auto;
            }
            .wrap:after {
                content: '';
                display: block;
                clear: both;
            }
            .box {
                 200px;
                border-radius: 10px;
                overflow: hidden;
                background-color: grey;
                float: left;
                margin: 10px;
            }
            .box img {
                 100%;
            }
            .box h2 {
                text-align: center;
                font-weight: normal;
                font-size: 20%;
            }
             button {
                margin: 10px;
            }
        </style>
    </head>
    <body>
    <div id="d1">
        
        <div class="wrap">
           	<button @click="ad_arr = ad_data.tv">电视</button>
        	<button @click="ad_arr = ad_data.phone">手机</button>
    
            <local-tag v-for="ad in ad_arr" :ad="ad"></local-tag>
        </div>
    </div>
    
    <script src="vue/vue.js"></script>
    <script>
        let localTag = {
            props: ['ad'],
            template: `
            <div class="box">
            <img :src="ad.img" alt="">
            <h2>{{ ad.title }}</h2>
            </div>
            `
        };
    
        ad_data = {
            tv: [
                {img: 'img/tv/tv1.jpg', title: 'tv1'},
                {img: 'img/tv/tv2.jpg', title: 'tv2'},
                {img: 'img/tv/tv3.jpg', title: 'tv3'},
                {img: 'img/tv/tv4.jpg', title: 'tv4'},
            ],
            phone: [
                {img: 'img/phone/phone1.jpg', title: 'phone1'},
                {img: 'img/phone/phone2.jpg', title: 'phone2'},
                {img: 'img/phone/phone3.jpg', title: 'phone3'},
                {img: 'img/phone/phone4.jpg', title: 'phone4'},
            ]
        };
    
        new Vue({
            el: '#d1',
            data: {
                ad_data,
                ad_arr: '',
            },
            components: {
                localTag
            },
        })
    </script>
    </body>
    </html>
    
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>作业2</title>
        <style>
            body, h2 {
                margin: 0;
            }
    
            .wrap {
                 880px;
                margin: 0 auto;
            }
    
            .wrap:after {
                content: '';
                display: block;
                clear: both;
            }
    
            .box {
                 200px;
                border-radius: 10px;
                overflow: hidden;
                background-color: grey;
                float: left;
                margin: 10px;
            }
    
            .box img {
                 100%;
            }
    
            h2 {
                text-align: center;
                font-weight: normal;
                font-size: 20px;
            }
            button {
                margin: 10px;
            }
        </style>
    </head>
    <body>
    <div id="d1">
        <div class="wrap">
            <p>
                <button @click="ad_arr=ad_data.tv; v1='当前未选择任何商品'">电视</button>
                <button @click="ad_arr=ad_data.phone; v1='当前未选择任何商品'">手机</button>
            </p>
            
            <local-tag v-for="ad in ad_arr" :ad="ad" @action="actionFn"></local-tag>
        </div>
        <h2>{{ v1 }}</h2>
    </div>
    
    <script src="vue/vue.js"></script>
    <script>
        let localTag = {
            props: ['ad'],
            template: `
            <div class="box" @click="clickFn">
            <img :src="ad.img" alt="">
            <h2>{{ ad.title }}</h2>
            </div>
            `,
            data() {
                return {
                    ad_title: '',
                }
            },
            methods: {
                clickFn() {
                    this.$emit('action', this.ad.title)
                }
            }
        };
    
        ad_data = {
            tv: [
                {img: 'img/tv/tv1.jpg', title: 'tv1'},
                {img: 'img/tv/tv2.jpg', title: 'tv2'},
                {img: 'img/tv/tv3.jpg', title: 'tv3'},
                {img: 'img/tv/tv4.jpg', title: 'tv4'},
            ],
            phone: [
                {img: 'img/phone/phone1.jpg', title: 'phone1'},
                {img: 'img/phone/phone2.jpg', title: 'phone2'},
                {img: 'img/phone/phone3.jpg', title: 'phone3'},
                {img: 'img/phone/phone4.jpg', title: 'phone4'},
            ]
        };
    
        new Vue({
            el: '#d1',
            data: {
                ad_data,
                ad_arr: '',
                v1: '当前未选择任何广告',
            },
            components: {
                localTag
            },
            methods: {
                actionFn(ad_title) {
                    this.v1 = ad_title + '被选中';
                }
            }
        })
    </script>
    </body>
    </html>
    
  • 相关阅读:
    PAT (Advanced Level) 1086. Tree Traversals Again (25)
    PAT (Advanced Level) 1085. Perfect Sequence (25)
    PAT (Advanced Level) 1084. Broken Keyboard (20)
    PAT (Advanced Level) 1083. List Grades (25)
    PAT (Advanced Level) 1082. Read Number in Chinese (25)
    HDU 4513 吉哥系列故事――完美队形II
    POJ Oulipo KMP 模板题
    POJ 3376 Finding Palindromes
    扩展KMP
    HDU 2289 Cup
  • 原文地址:https://www.cnblogs.com/bigb/p/12064143.html
Copyright © 2011-2022 走看看