JSFiddle - React, Tailwind, and code Playground
by kurotanshi
HTML
<script src="https://unpkg.com/vue@next"></script>
<div id="app">
<div class="wrap">
click without stopPropagation
<div class="outer" @click="alert('Outer')">
<span>Outer</span>
<div class="other" @click="alert('Other')">
Other
<div class="inner" @click="alert('Inner')">Inner</div>
</div>
</div>
</div>
<div class="wrap">
click with stopPropagation
<div class="outer" @click="alert('Outer')">
<span>Outer</span>
<div class="inner" @click.stop="alert('Inner')">Inner</div>
</div>
</div>
</div>
SCSS
body {
padding: 1rem;
}
.app {
overflow: hidden;
}
.wrap {
float: left;
margin-right: 3rem;
margin-bottom: 2rem;
}
.outer {
cursor: pointer;
position: relative;
width: 150px;
height: 150px;
padding: 25px;
background-color: #ccc;
text-align: center;
margin-top: 1rem;
&:hover{
background-color: darken(#ccc, 10%);
}
}
.other {
position: absolute;
width: 120px;
height: 120px;
background-color: green;
}
.inner {
cursor: pointer;
position: relative;
top: 50%;
left: 50%;
margin-left: -45px;
margin-top: -55px;
width: 90px;
height: 90px;
text-align: center;
line-height: 70px;
background-color: #f00;
color: #fff;
&:hover{
background-color: darken(#f00, 10%);
}
}
JavaScript
const vm = Vue.createApp({
methods: {
alert(val){
alert(val);
}
}
}).mount('#app');