Day2 使用Vue3创建一个回文检测项目
1. 创建 PalindromeChecker.vue 组件
<template>
<div class="palindrome-checker">
<h1>回文检测器</h1>
<input
type="text"
v-model="inputText"
placeholder="输入字符串"
@input="checkPalindrome"
/>
<p v-if="isPalindrome !== null">
{{ isPalindrome ? '是回文' : '不是回文' }}
</p>
</div>
</template>
<script>
export default {
name: 'PalindromeChecker',
data() {
return {
inputText: '',
isPalindrome: null
};
},
methods: {
checkPalindrome() {
const sanitized = this.inputText.replace(/[^a-zA-Z0-9]/g, '').toLowerCase();
this.isPalindrome = sanitized === sanitized.split('').reverse().join('');
}
}
};
</script>
<style scoped>
.palindrome-checker {
text-align: center;
margin-top: 50px;
}
input {
padding: 10px;
font-size: 16px;
width: 300px;
margin-bottom: 20px;
}
p {
font-size: 18px;
color: #333;
}
</style>
2. 创建 App.vue
<template>
<div id="app">
<PalindromeChecker />
</div>
</template>
<script>
import PalindromeChecker from './components/PalindromeChecker.vue';
export default {
name: 'App',
components: {
PalindromeChecker
}
};
</script>
<style>
#app {
font-family: Avenir, Helvetica, Arial, sans-serif;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
text-align: center;
color: #2c3e50;
margin-top: 60px;
}
</style>
3. 问题解决
上述代码创建的回文检测实现了基本功能,但是页面比较丑陋.
- 解决回文检测容器受到页面缩放影响,在网页上的位置会发生变化
使用 (position: fixed) 实现.
<style scoped>
.palindrome-checker {
position: fixed;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
background: antiquewhite;
padding: 20px;
border-radius: 8px;
box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
text-align: center;
}
input {
padding: 10px;
font-size: 16px;
width: 300px;
margin-bottom: 20px;
}
p {
font-size: 18px;
color: #333;
}
</style>
- 解决背景颜色无法在网页上显示完整问题
定义一个CSS类,直接为body设置背景颜色.
/* .src/assets/style.css */
body {
background-color: #2c3e50; /* 设置页面背景为浅灰色 */
margin: 0;
padding: 0;
font-family: Arial, sans-serif;
}
将 src/assets/style.css 引入 main.js.
import './assets/style.css';
解决后页面效果如下图:
4. 页面改进
-
加入确认按钮
-
加入提示操作
-
修改字体样式
最终效果如下图: