Vue.js. তে কোনও উপাদানকে ঘুরিয়ে রেখে আমি একটি ডিভিটি দেখাতে চাই কিন্তু আমি এটি কাজ করে বলে মনে হচ্ছে না।
দেখে মনে হচ্ছে vue.js তে হোভার বা মাউসওভারের জন্য কোনও ইভেন্ট নেই। এটা কি সত্যি?
Jquery হোভার এবং vue পদ্ধতি একত্রিত করা সম্ভব হবে?
Vue.js. তে কোনও উপাদানকে ঘুরিয়ে রেখে আমি একটি ডিভিটি দেখাতে চাই কিন্তু আমি এটি কাজ করে বলে মনে হচ্ছে না।
দেখে মনে হচ্ছে vue.js তে হোভার বা মাউসওভারের জন্য কোনও ইভেন্ট নেই। এটা কি সত্যি?
Jquery হোভার এবং vue পদ্ধতি একত্রিত করা সম্ভব হবে?
উত্তর:
আমি আপনার কাছে যা চাইছেন তার একটি কার্যকারী উদাহরণ এখানে।
http://jsfiddle.net/1cekfnqw/3017/
<div id="demo">
<div v-show="active">Show</div>
<div @mouseover="mouseOver">Hover over me!</div>
</div>
var demo = new Vue({
el: '#demo',
data: {
active: false
},
methods: {
mouseOver: function(){
this.active = !this.active;
}
}
});
v-on:mouseover="mouseOver"তবে সিনট্যাক্সের কোন সংস্করণ বদলেছে তা উল্লেখ করেনি
@mouseover:mouseover
আমি মনে করি উপরে হোভারের জন্য লজিকগুলি ভুল। মাউস ঘোরাফেরা করার সময় এটি ঠিক বিপরীত হয়। আমি কোড নীচে ব্যবহার করেছেন। এটি পুরোপুরি ঠিকঠাকভাবে কাজ করে বলে মনে হচ্ছে।
<div @mouseover="upHere = true" @mouseleave="upHere = false" >
<h2> Something Something </h2>
<some-component v-show="upHere"></some-component>
</div>
উদাহরণস্বরূপ
data : {
upHere : false
}
আশা করি এইটি কাজ করবে
data: () => ({ upHere: false })
এখানে কোনও পদ্ধতির দরকার নেই।
এইচটিএমএল
<div v-if="active">
<h2>Hello World!</h2>
</div>
<div v-on:mouseover="active = !active">
<h1>Hover me!</h1>
</div>
জাতীয়
new Vue({
el: 'body',
data: {
active: false
}
})
v-on:mouseoverঅথবা শর্টকাট @mouseoverডক্স প্রতি vuejs.org/guide/syntax.html#v-on-Shorthand
onসাথে v-on:বা এর @জন্য প্রতিস্থাপন করতে পারেন । w3schools.com/tags/ref_eventattributes.asp
শিশু বা ভাইবোন উপাদানগুলি দেখানোর জন্য এটি কেবলমাত্র সিএসএসের মাধ্যমেই সম্ভব। আপনি ব্যবহার করেন তাহলে :hovercombinators সামনে ( +, ~, >, space)। তারপরে শৈলীটি আটকানো উপাদানটির জন্য নয়।
এইচটিএমএল
<body>
<div class="trigger">
Hover here.
</div>
<div class="hidden">
This message shows up.
</div>
</body>
সিএসএস
.hidden { display: none; }
.trigger:hover + .hidden { display: inline; }
সঙ্গে mouseoverএবং mouseleaveঘটনা আপনি যে এই যুক্তি কার্যকরী একটি টগল ফাংশন নির্ধারণ এবং রেন্ডারিং মান উপর প্রতিক্রিয়া পারবেন না।
এই উদাহরণটি দেখুন:
var vm = new Vue({
el: '#app',
data: {btn: 'primary'}
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.min.js"></script>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css">
<div id='app'>
<button
@mouseover="btn='warning'"
@mouseleave="btn='primary'"
:class='"btn btn-block btn-"+btn'>
{{ btn }}
</button>
</div>
@mouseover="btn-color='btn-warning' @mouseleave="btn-color='btn-primary' :class="btn btn-block { btn-color}"
কোনও উপাদানটির টেমপ্লেটের অভ্যন্তরে কঠোরভাবে হোভারে ক্লাস টগল করা সম্ভব, তবে এটি সুস্পষ্ট কারণের জন্য ব্যবহারিক সমাধান নয়। অন্যদিকে প্রোটোটাইপিংয়ের জন্য, স্ক্রিপ্টের মধ্যে ডেটা বৈশিষ্ট্য বা ইভেন্ট হ্যান্ডলারগুলি সংজ্ঞায়িত না করা আমার পক্ষে দরকারী।
আপনি ভুটিফাই ব্যবহার করে আইকন রঙগুলির সাথে কীভাবে পরীক্ষা করতে পারেন তার একটি উদাহরণ এখানে।
new Vue({
el: '#app'
})
<link href="https://fonts.googleapis.com/css?family=Roboto:100,300,400,500,700,900|Material+Icons" rel="stylesheet">
<link href="https://cdn.jsdelivr.net/npm/vuetify/dist/vuetify.min.css" rel="stylesheet">
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>
<script src="https://cdn.jsdelivr.net/npm/vuetify/dist/vuetify.js"></script>
<div id="app">
<v-app>
<v-toolbar color="black" dark>
<v-toolbar-items>
<v-btn icon>
<v-icon @mouseenter="e => e.target.classList.toggle('pink--text')" @mouseleave="e => e.target.classList.toggle('pink--text')">delete</v-icon>
</v-btn>
<v-btn icon>
<v-icon @mouseenter="e => e.target.classList.toggle('blue--text')" @mouseleave="e => e.target.classList.toggle('blue--text')">launch</v-icon>
</v-btn>
<v-btn icon>
<v-icon @mouseenter="e => e.target.classList.toggle('green--text')" @mouseleave="e => e.target.classList.toggle('green--text')">check</v-icon>
</v-btn>
</v-toolbar-items>
</v-toolbar>
</v-app>
</div>
আমি একই সমস্যা নিয়ে এসেছি, এবং আমি এটি কাজ করে!
<img :src='book.images.small' v-on:mouseenter="hoverImg">
একটি সঠিক কাজ করছে জেএসফিডেল: http://jsfiddle.net/1cekfnqw/176/
<p v-on:mouseover="mouseOver" v-bind:class="{on: active, 'off': !active}">Hover over me!</p>
যদিও আমি নতুন কম্পোজিশন এপিআই ব্যবহার করে একটি আপডেট দেব।
<template>
<div @mouseenter="hovering = true" @mouseleave="hovering = false">
{{ hovering }}
</div>
</template>
<script lang="ts">
import { ref } from '@vue/compsosition-api'
export default {
setup() {
const hoverRef = ref(false)
return { hovering }
}
})
</script>
একটি useHoverফাংশন তৈরি করা আপনাকে যে কোনও উপাদানগুলিতে পুনরায় ব্যবহারের অনুমতি দেবে।
export function useHover(target: Ref<HTMLElement | null>) {
const hovering = ref(false)
const enterHandler = () => (hovering.value = true)
const leaveHandler = () => (hovering.value = false)
onMounted(() => {
if (!target.value) return
target.value.addEventListener('mouseenter', enterHandler)
target.value.addEventListener('mouseleave', leaveHandler)
})
onUnmounted(() => {
if (!target.value) return
target.value.removeEventListener('mouseenter', enterHandler)
target.value.removeEventListener('mouseleave', leaveHandler)
})
return hovering
}
এখানে ভিউ উপাদানগুলির মধ্যে ফাংশনটি কল করার একটি দ্রুত উদাহরণ রয়েছে।
<template>
<div ref="hoverRef">
{{ hovering }}
</div>
</template>
<script lang="ts">
import { ref } from '@vue/compsosition-api'
import { useHover } from './useHover'
export default {
setup() {
const hoverRef = ref(null)
const hovering = useHover(hoverRef)
return { hovering, hoverRef }
}
})
</script>
আপনি এমন একটি লাইব্রেরিও ব্যবহার করতে পারেন @vuehooks/coreযা সহ অনেকগুলি কার্যকর কার্য সহ আসে useHover।
মাউসওভার এবং মাউসআউটের জন্য এখানে একটি খুব সাধারণ উদাহরণ:
<div id="app">
<div :style = "styleobj" @mouseover = "changebgcolor" @mouseout = "originalcolor">
</div>
</div>
new Vue({
el:"#app",
data:{
styleobj : {
width:"100px",
height:"100px",
backgroundColor:"red"
}
},
methods:{
changebgcolor : function() {
this.styleobj.backgroundColor = "green";
},
originalcolor : function() {
this.styleobj.backgroundColor = "red";
}
}
});
এই কোডটি কীভাবে দেখায় আপনি সন্তুষ্ট না হন দয়া করে ভ্যু-মাউসওভার প্যাকেজটি একবার দেখুন:
<div
@mouseover="isMouseover = true"
@mouseleave="isMouseover = false"
/>
ভ্যু-মাউসওভার একটি সরবরাহ করেv-mouseover নির্দেশনা সরবরাহ করে যা স্বয়ংক্রিয়ভাবে নির্দিষ্ট ডেটা কনটেক্সট বৈশিষ্ট্য আপডেট করে যখন কার্সারটি এইচটিএমএল উপাদানটি প্রবেশ করে বা ফেলে দেয় যখন নির্দেশটি সংযুক্ত থাকে।
পরবর্তী উদাহরণে ডিফল্টরূপে isMouseoverসম্পত্তিটি trueযখন কার্সারটি এইচটিএমএল উপাদানের উপরে চলে যায় এবং falseঅন্যথায়:
<div v-mouseover="isMouseover" />
এছাড়াও ডিফল্টরূপে যখন উপাদানটির সাথে সংযুক্ত থাকে তখন প্রাথমিকভাবে নির্ধারিতisMouseover হবে , সুতরাং এটি প্রথম / ইভেন্টের আগে নিযুক্ত করা হবে না ।v-mouseoverdivmouseentermouseleave
আপনি নির্দেশের মাধ্যমে কাস্টম মান নির্দিষ্ট করতে পারেন v-mouseover-value:
<div
v-mouseover="isMouseover"
v-mouseover-value="customMouseenterValue"/>
অথবা
<div
v-mouseover="isMouseover"
v-mouseover-value="{
mouseenter: customMouseenterValue,
mouseleave: customMouseleaveValue
}"
/>
কাস্টম ডিফল্ট মানগুলি সেটআপের সময় অপশনগুলির মাধ্যমে প্যাকেজে যেতে পারে to