goods

<template>
<div class="goods">
<div class="menu-wrapper" ref="menuWrapper">
<ul>

<li v-for="(item, index) in goods" class="menu-item" :class="{'current': currentIndex === index}"
@click="selectMenu(index,$event)">
<span class="text border-1px" ref="menuList">
<span v-show="item.type>0" class="icon" :class="classMap[item.type]"></span>{{ item.name }}
</span>
</li>
</ul>
</div>
<div class="food-wrapper" ref="foodWrapper">
<ul>
<li v-for="item in goods" class="food-list" ref="foodList">
<h1 class="title">{{item.name}}</h1>
<ul>
<li v-for="food in item.foods" class="food-item">
<div class="icon">
<img :src="food.icon" width="57" height="57"/>
</div>
<div class="content">
<div class="name">{{food.name}}</div>
<p class="dec">{{food.description}}</p>
<div class="extra">
<span class="sellCount">月售{{food.sellCount}}份</span>
<span class="rating">好評率{{food.rating}}%</span>
</div>
<div class="price">
<span class="now">¥{{food.price}}</span>
<span v-show="food.oldPrice" class="oldPrice">¥{{food.oldPrice}}</span>
</div>
</div>
</li>
</ul>
</li>
</ul>
</div>
</div>

</template>
<script type="text/ecmascript-6">
import BScroll from 'better-scroll'
const ERROK = 0
export default {
props: {
seller: {
type: Object
}
},
data() {
return {
goods: [],
listHeight: [], // 定義一個變量數(shù)組來存儲每個item的高度
scrollY: 0 // 滾動的y軸坐標(biāo)
}
},
created() {
this.classMap = ['decrease', 'discount', 'special', 'invoice', 'guarantee']
this.$http.get('/api/goods').then((response) => {
response = response.body
if(response.errno === ERROK){
this.goods = response.data
console.log(response.data)
this.$nextTick(() => {
this._initScroll()
this._calculateHeight()
})
}
})
},
computed: {
// 3.計算menu當(dāng)前的index
currentIndex() {
for(let i = 0; i < this.listHeight.length; i++) {
let height1 = this.listHeight[i]
let height2 = this.listHeight[i + 1]
if(!height2 || (this.scrollY >= height1 && this.scrollY < height2)) {
this._followScroll(i)
return i
}
}
return 0
}
},
methods: {
// 6. 點(diǎn)擊某個menu,foodList列表跳轉(zhuǎn)
selectMenu(index, event) {
// 解決瀏覽器點(diǎn)擊事件響應(yīng)兩次的問題
if(event._constructed) {
return
}
let foodList = this.$refs.foodList
let el = foodList[index]
this.foodsScroll.scrollToElement(el, 300)
},
_initScroll() {
this.menuScroll = new BScroll(this.$refs.menuWrapper, {})
this.foodsScroll = new BScroll(this.$refs.foodWrapper, {
click: true,
probeType: 3 // 探針,實時監(jiān)聽滾動位置
})
// 2.獲取滾動的高度
this.foodsScroll.on('scroll', (pos) => {
if(pos.y <= 0) {
this.scrollY = Math.abs(Math.round(pos.y))
}
})
},
// 1.計算每個item的高度,記得在li里面添加ref標(biāo)簽來獲取dom
_calculateHeight() {
let foodList = this.$refs.foodList // 獲取food列表的DOM
let height = 0
this.listHeight.push(height)
for(let i = 0; i < foodList.length; i++) {
let item = foodList[i]
height += item.clientHeight // 獲取可視區(qū)域店高度
this.listHeight.push(height)
}
},
// 4.menu滾動到制定位置
_followScroll(index) {
let menuList = this.$refs.menuList
let el = menuList[index]
this.menuScroll.scrollToElement(el, 300, 0, -100)
}
}
}
</script>

<style lang="stylus" rel="stylesheet/stylus">
@import "../../common/stylus/mixin.styl"
*{margin: 0; padding: 0}
.goods
position absolute
display flex
width 100%
top 174px
bottom 46px
overflow hidden
.menu-wrapper
flex 0 0 80px
width 80px
background #f3f5f7
.menu-item
display table
width 56px
height 54px
line-height 12px
padding 0 12px
&.current
position relative
margin-top -1px
z-index 10
background #fff
font-weight 700
.text
border-none()
.icon
display inline-block
width 12px
height 12px
background-size 12px 12px
background-repeat no-repeat
vertical-align top
padding-right 2px
&:last-child
margin 0
&.decrease
bg-image('decrease_3')
&.discount
bg-image('discount_3')
&.special
bg-image('special_3')
&.invoice
bg-image('invoice_3')
&.guarantee
bg-image('guarantee_3')
.text
display table-cell
width 56px
font-size 12px
line-height 14px
vertical-align middle
border-1px(rgba(7, 17, 27, 0.1))
.food-wrapper
flex 1
font-size 0
.title
font-size 12px
height 26px
line-height 26px
color rgb(147,153,159)
background #f3f5f7
border-left 2px solid #d9dde1
padding-left 14px
.food-item
display flex
margin 18px 0 0 18px
border-1px(rgba(7, 17, 27, 0.1))
padding-bottom 18px
&:last-child
border-none()
margin-bottom 0
.icon
flex 0 0 57px
margin-right 10px
.content
flex 1
.name
font-size 14px
color rgb(7,17,27)
line-height 10px
.desc, .extra
font-size 10px
color rgb(147,153,159)
margin 8px 0
.desc
line-height 14px
.extra
line-height 10px
.price
.now
font-size 14px
font-weight 700
line-height 24px
color #f01414
.oldPrice
font-size 10px
color rgb(147,153,159)
font-weight 700
line-height 24px
margin-left 8px

</style>

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,247評論 6 543
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 99,520評論 3 429
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,362評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,805評論 1 317
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 72,541評論 6 412
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,896評論 1 328
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,887評論 3 447
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 43,062評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,608評論 1 336
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 41,356評論 3 358
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 43,555評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,077評論 5 364
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,769評論 3 349
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,175評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,489評論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,289評論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 48,516評論 2 379

推薦閱讀更多精彩內(nèi)容