请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

为什么我写在app.vue的样式不全局,就是对其他的组件没有影响

app.vue

<template>

  <div id="app">

    <img src="./assets/logo.png">

    <router-view></router-view>

  </div>

</template>


<script>

export default {

  name: 'app'

}

</script>


<style>

html, body, div, span, applet, object, iframe,

h1, h2, h3, h4, h5, h6, p, blockquote, pre,

a, abbr, acronym, address, big, cite, code,

del, dfn, em, img, ins, kbd, q, s, samp,

small, strike, strong, sub, sup, tt, var,

b, u, i, center,

dl, dt, dd, ol, ul, li,

fieldset, form, label, legend,

table, caption, tbody, tfoot, thead, tr, th, td,

article, aside, canvas, details, embed, 

figure, figcaption, footer, header, hgroup, 

menu, nav, output, ruby, section, summary,

time, mark, audio, video {

  margin: 0;

  padding: 0;

  border: 0;

  font-size: 100%;

  font: inherit;

  vertical-align: baseline;

}

/* HTML5 display-role reset for older browsers */

article, aside, details, figcaption, figure, 

footer, header, hgroup, menu, nav, section {

  display: block;

}

body {

  line-height: 1;

}

ol, ul {

  list-style: none;

}

blockquote, q {

  quotes: none;

}

blockquote:before, blockquote:after,

q:before, q:after {

  content: '';

  content: none;

}

table {

  border-collapse: collapse;

  border-spacing: 0;

}

a {

  color: inherit;

  text-decoration: none;

}

body {

  background: #f0f2f5;

  font-family: "Helvetica Neue",Helvetica,Arial,"Hiragino Sans GB","Hiragino Sans GB W3","Microsoft YaHei UI","Microsoft YaHei","WenQuanYi Micro Hei",sans-serif;

  font-size: 14px;

  color: #444;

}

.app-head {

  background: #363636;

  color: #b2b2b2;

  height: 90px;

  line-height: 90px;

  width: 100%;

}

.app-head-inner {

  width: 1200px;

  margin: 0 auto;

}

.head-logo {

  float: left;

  margin-top: 20px;

}

.head-logo img {

  width: 50px;

}

.head-nav {

  float: right;

}

.head-nav ul {

  overflow: hidden;

}

.head-nav li {

  cursor: pointer;

  float: left;

}

.nav-pile {

  padding: 0 10px;

}

.app-foot {

  text-align: center;

  height: 80px;

  width: 100%;

  line-height: 80px;

  background: #e3e4e8;

  clear: both;

  margin-top: 30px;

}

.container {

  width: 1200px;

  margin: 0 auto;

}

.hr {

  height: 1px;

  width: 100%;

  background: #ddd;

}

.button {

  background: #4fc08d;

  color: #fff;

  display: inline-block;

  padding: 10px 20px;

  cursor: pointer;

}

.button:hover {

  background: #4fc08d;

}

.g-form {


}

.g-form-line {

  padding: 15px 0;

}

.g-form-label {

  width: 100px;

  font-size: 16px;

  display: inline-block;

}

.g-form-input {

  display: inline-block;

}

.g-form-input input {

  height: 30px;

  width: 200px;

  line-height: 30px;

  vertical-align: middle;

  padding: 0 10px;

  border: 1px solid #ccc;

}

.g-form-btn {

  padding-left: 100px;

}

</style>

index.vue

<template>

<div class="index-wrap">

    <div class="index-left">

      <div class="index-left-block">

        <h2>全部产品</h2>

        

        <template v-for="product in productList">

          <h3>{{ product.title}}</h3>

          <ul>

            <li v-for="item in product.list">

              <a :href="item.url">{{ item.name }}</a>

              <span v-if="item.hot" class="hot-tag">HOT</span>

            </li>

          </ul>

          <div v-if="!product.last" class="hr"></div>

        </template>

      </div>

      <div class="index-left-block lastest-news">

        <h2>最新消息</h2>

        <ul>

          <li v-for="item in newsList">

          <a :href="item.url">

          {{ item.title }}

            </a>

          </li>

          

        </ul>

      </div>

    </div>

    <div class="index-right">

<div class="index-board-list">

<div class="index-board-item" v-for="(item,index) in boardList" :class="{'line-last' : index % 2 !== 0}">

<div class="index-board-item-inner">

<h2>{{ item.title }}</h2>

<p>{{ item.description }}</p>

<div class="index-board-button">

<a href="" class="button">立即购买</a>

</div>

</div>

</div>

</div>

</div>

</div>

</template>


<script>

export default {

  data () {

    return {

     boardList: [

        {

          title: '开放产品',

          description: '开放产品是一款开放产品',

          id: 'car',

          toKey: 'analysis',

          saleout: false

        },

        {

          title: '品牌营销',

          description: '品牌营销帮助你的产品更好地找到定位',

          id: 'earth',

          toKey: 'count',

          saleout: false

        },

        {

          title: '使命必达',

          description: '使命必达快速迭代永远保持最前端的速度',

          id: 'loud',

          toKey: 'forecast',

          saleout: true

        },

        {

          title: '勇攀高峰',

          description: '帮你勇闯高峰,到达事业的顶峰',

          id: 'hill',

          toKey: 'publish',

          saleout: false

        }

      ],

    newsList: [

{

              title: '数据统计',

              url: 'http://starcraft.com'

            },

            {

              title: '数据预测',

              url: 'http://warcraft.com'

            },

            {

              title: '流量分析',

              url: 'http://overwatch.com',

              hot: true

            },

            {

              title: '广告发布',

              url: 'http://hearstone.com'

            }

    ],

      productList: {

      pc: {

      title:'PC产品',

      list: [

{

name: '数据统计',

              url: 'http://starcraft.com'

            },

            {

              name: '数据预测',

              url: 'http://warcraft.com'

            },

            {

              name: '流量分析',

              url: 'http://overwatch.com',

              hot: true

            },

            {

              name: '广告发布',

              url: 'http://hearstone.com'

}

      ]

      },

      app: {

      title:'手机应用类',

      list: [

{

name: '91助手',

              url: 'http://weixin.com'

            },

            {

              name: '产品助手',

              url: 'http://twitter.com',

              hot: true

            },

            {

              name: '智能地图',

              url: 'http://maps.com'

            },

            {

              name: '团队语音',

              url: 'http://phone.com'

}

      ]

      }

      }

    }

  }

}

</script>


<!-- Add "scoped" attribute to limit CSS to this component only -->

<style>

.index-wrap {

  width: 1200px;

  margin: 0 auto;

  overflow: hidden;

}

.index-left {

  float: left;

  width: 300px;

  text-align: left;

}

.index-right {

  float: left;

  width: 900px;

}

.index-left-block {

  margin: 15px;

  background: #fff;

  box-shadow: 0 0 1px #ddd;

}

.index-left-block .hr {

  margin-bottom: 20px;

}

.index-left-block h2 {

  background: #4fc08d;

  color: #fff;

  padding: 10px 15px;

  margin-bottom: 20px;

}

.index-left-block h3 {

  padding: 0 15px 5px 15px;

  font-weight: bold;

  color: #222;

}

.index-left-block ul {

  padding: 10px 15px;

}

.index-left-block li {

  padding: 5px;

}

.index-board-list {

  overflow: hidden;

}

.index-board-item {

  float: left;

  width: 400px;

  background: #fff;

  box-shadow: 0 0 1px #ddd;

  padding: 20px;

  margin-right: 20px;

  margin-bottom: 20px;

}

.index-board-item-inner {

  min-height: 125px;

  padding-left: 120px;

}

.index-board-item h2 {

  font-size: 18px;

  font-weight: bold;

  color: #000;

  margin-bottom: 15px;

}

.line-last {

  margin-right: 0;

}

.index-board-button {

  margin-top: 20px;

}

.lastest-news {

  min-height: 512px;

}

.hot-tag {

  background: red;

  color: #fff;

}

.new-item {

  display: inline-block;

  width: 230px;

  overflow: hidden;

  text-overflow: ellipsis;

  white-space: nowrap;

}

</style>

这里的class=“button”不能从app.vue那里获取样式,这是为什么?

正在回答 回答被采纳积分+3

1回答

fishenal 2017-10-11 11:30:03

代码有点长, index.vue是通过路由调用的吗,确定index.vue是放在app.vue里面的,才能用到button的样式,代码看着没问题,不加scoped 样式会向下传递。另外,在浏览器里调试一下,看看dom元素有没有这个样式。

0 回复 有任何疑惑可以回复我~
  • index.vue是通过路由调用的是放在layout.vue里面的,然后layout.vue是挂载在app.vue里面的组件,按道理说样式会传递给index.vue的,但是好像不行。dom元素没有button这个样式,但是我把button这个样式写在layout.vue,就可以显示样式?意思是对路由来说哪个调用的路由就把样式写在哪个组件上吗?
    回复 有任何疑惑可以回复我~ 2017-10-11 16:16:25
  • 应该是在app.vue那里的。main.js那里router的el是在#app的,那layout.vue那里应该是映射,但是就是传递不到css。
    回复 有任何疑惑可以回复我~ 2017-10-11 21:52:45
  • fishenal 回复 提问者 qq_万能的pino_04344828 #3
    理论上不是,只要不加scoped,都会被放到全局样式里,会给所有子组件共享,但子组件的全局样式影响不到父组件。你的问题,我不清楚layout是怎么挂载到app.vue上的,这个过程可能有问题,我的全局样式就是直接写到app.vue里的,再暴力点的做法是build之后看一下打包的全局css,检查一下代码,看过程有没有报错。
    回复 有任何疑惑可以回复我~ 2017-10-13 11:09:40
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信