| 
						 | 
						- <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>
 
 
  |