|
|
- <template>
- <view class="article-item" @click="handleClick">
- <view class="image-container">
- <image :src="item.image" mode="aspectFill" class="article-image" />
- </view>
- <view class="content-container">
- <text class="article-title">{{ item.title }}</text>
- </view>
- </view>
- </template>
-
- <script>
- export default {
- name: 'ArticleItem',
- props: {
- item: {
- type: Object,
- required: true,
- default: () => ({
- title: '',
- image: ''
- })
- }
- },
- methods: {
- handleClick() {
- this.$emit('click', this.item);
- }
- }
- }
- </script>
-
- <style scoped lang="scss">
- .article-item {
- display: flex;
- flex-direction: column;
- background: #fff;
- border-radius: 12rpx;
- overflow: hidden;
- box-shadow: 0 4rpx 12rpx rgba(0, 0, 0, 0.1);
- margin-bottom: 20rpx;
- transition: transform 0.2s ease;
-
- &:active {
- transform: scale(0.98);
- }
- }
-
- .image-container {
- width: 100%;
- height: 300rpx;
- overflow: hidden;
-
- .article-image {
- width: 100%;
- height: 100%;
- object-fit: cover;
- }
- }
-
- .content-container {
- padding: 20rpx;
-
- .article-title {
- font-size: 30rpx;
- font-weight: 500;
- color: #333;
- line-height: 1.6;
- display: -webkit-box;
- -webkit-box-orient: vertical;
- -webkit-line-clamp: 2;
- overflow: hidden;
- text-overflow: ellipsis;
- }
- }
- </style>
|