我想实现掘金网站输入框的效果
未聚焦
聚焦
尝试用vue + element-plus
实现,并没有实现这种动画效果,只是简单的占据空间
stackblitz
<script setup>import HelloWorld from './components/HelloWorld.vue';import { ref, computed } from 'vue';const isFocus = ref(false);const basis = computed(() => { return isFocus.value ? 'flex-full' : 'flex-60';});</script><template> <div class="flex justify-between w-md"> <el-form :class="basis" class="transition"> <el-form-item class="mb-0"> <el-input placeholder="搜索" @focus="isFocus = true" @blur="isFocus = false" ></el-input> </el-form-item> </el-form> <el-dropdown v-show="!isFocus" split-button type="primary" class="flex-40"> 创作者中心 <template #dropdown> <el-dropdown-menu> <el-dropdown-item>Action 1</el-dropdown-item> <el-dropdown-item>Action 2</el-dropdown-item> <el-dropdown-item>Action 3</el-dropdown-item> <el-dropdown-item>Action 4</el-dropdown-item> <el-dropdown-item>Action 5</el-dropdown-item> </el-dropdown-menu> </template> </el-dropdown> </div></template><style scoped>.transition { transition: width 2s ease-in;}.grow { flex-grow: 1;}.flex-full { flex-basis: 100%;}.flex-60 { flex-basis: 60%;}.flex-40 { flex-basis: 40%;}.mb-0 { margin-bottom: 0px !important;}.flex { display: flex; background: red;}.gap-sm { gap: 2px;}.justify-between { justify-content: space-between;}.w-md { width: 350px;}</style>
附:我感觉使用组件库虽然省事但是也会有很多的限制,可能我现在还没有活用这些组件库。
因为你使用的是 flex
布局,进行伸缩的时候并不只是 width
宽度。
.transition {- transition: width 2s ease-in;+ transition: all 2s ease-in;}
给你大概改了一个Demo Element Plus Playground
<script setup>import { ref, computed } from 'vue';const isFocus = ref(false);</script><template> <div :class="['flex', 'justify-between', 'w-md', 'box', isFocus ? 'hidden' : 'show']"> <el-form class="flex-full my-form"> <el-form-item> <el-input placeholder="搜索" @focus="isFocus = true" @blur="isFocus = false" ></el-input> </el-form-item> </el-form> <el-dropdown split-button type="primary" class="my-dropdown"> 创作者中心 <template #dropdown> <el-dropdown-menu> <el-dropdown-item>Action 1</el-dropdown-item> <el-dropdown-item>Action 2</el-dropdown-item> <el-dropdown-item>Action 3</el-dropdown-item> <el-dropdown-item>Action 4</el-dropdown-item> <el-dropdown-item>Action 5</el-dropdown-item> </el-dropdown-menu> </template> </el-dropdown> </div></template><style scoped>.box { overflow-x: hidden; padding-right: 145px; transition: padding 1s; box-sizing: border-box; position: relative;}.box.hidden { padding-right: 0;}.box.hidden .my-dropdown { transform: translateX(100%); opacity: 0}.my-dropdown { width: 135px; flex: 0 0 auto; position: absolute; right: 0; transition: transform 1s, opacity .4s;}.grow { flex-grow: 1;}.flex-full { flex-basis: 100%;}.flex-60 { flex-basis: 60%;}.flex-40 { flex-basis: 40%;}.mb-0 { margin-bottom: 0px !important;}.flex { display: flex;}.gap-sm { gap: 2px;}.justify-between { justify-content: space-between;}.w-md { width: 350px;}</style>
有人知道ElementUI这种换肤动画效果是怎么实现的吗?是什么原理呢? 原地址在这:https://element-plus.org/zh-CN/component/overview.html
使用 vite 打包组件库,在新的项目中使用时报错 下面是打包后的产物 pe 和 dn 找不到导致项目启动时就报错, 手动再新起一个别名时会结局此问题 vite.config.ts 配置如下 请问这个问题该怎么解决
本文向大家介绍HTML5 DataList实现输入框自动下拉提示,包括了HTML5 DataList实现输入框自动下拉提示的使用技巧和注意事项,需要的朋友参考一下 在Web设计中,经常会用到如输入框的自动下拉提示,这将大大方便用户的输入。比如在Google中进行搜索的时候,就会出现下拉的智能提示列表选择框。这样的下拉列表框称为AutoComplete。在以前,如果要实现这样的功能,必须要求开发者使
用哪些element-plus组件可以实现该搜索框的效果呢? default 输入过程中该下拉框一直存在 按回车后转到搜索页面。 这里首先有一个表单 之后考虑下拉框如何实现 尝试一: 使用Dropdown组件 playground 问题 弹出框的长度和输入框的长度不一样长 这个容易解决,在el-input和el-dropdown-menu上设置相同的宽度即可。 带有箭头 需要自己添加一些css样式
element-plus如何兼容第三方样式库tailwindcss? 我希望tailwindcss的样式尽可能的覆盖element-plus中的样式。 但事实上相同特殊度下,element-plus的样式覆盖了tailwindcss中的样式 注:在ant design中有专门的章节讲样式兼容问题,而element-plus中没有。
本文向大家介绍vue.js实现单选框、复选框和下拉框示例,包括了vue.js实现单选框、复选框和下拉框示例的使用技巧和注意事项,需要的朋友参考一下 Vue.js可以很方便的实现数据双向绑定,所以在处理表单,人机交互方面具有很大的优势。下边以单选框、复选框和下拉框为例介绍他们在HTML和Vue.js中的具体实现方式。 一、单选框 在传统的HTML中实现单选框的方法如下: 注:这里name属性值必