Your search did not match any results.
Tooltip

Tooltip

Documentation

The Tooltip component displays a tooltip for a specified element on the page. This demo shows how you can customize the tooltip and animate its appearance on the page.

Backend API
Copy to CodeSandBox
Apply
Reset
import React from 'react'; import { Tooltip } from 'devextreme-react/tooltip'; const animationConfig = { show: { type: 'slide', from: { top: -100, opacity: 0, }, to: { top: 0, opacity: 1, }, }, hide: { type: 'pop', from: { scale: 1, opacity: 1, }, to: { scale: 0.1, opacity: 0, }, }, }; class App extends React.Component { constructor(props) { super(props); this.state = { defaultVisible: false, withAnimationVisible: false, withTemplateVisible: false, }; this.toggleDefault = this.toggleDefault.bind(this); this.toggleWithTemplate = this.toggleWithTemplate.bind(this); this.toggleWithAnimation = this.toggleWithAnimation.bind(this); } render() { return ( <div className="form"> <div className="label">Default mode</div> <div> <img id="product1" src="../../../../images/products/17.png" onMouseEnter={this.toggleDefault} onMouseLeave={this.toggleDefault} /> <Tooltip target="#product1" visible={this.state.defaultVisible} closeOnOutsideClick={false} > <div>ExcelRemote IR</div> </Tooltip> </div> <div className="label">With template</div> <div> <img id="product2" src="../../../../images/products/3.png" onMouseEnter={this.toggleWithTemplate} onMouseLeave={this.toggleWithTemplate} /> <Tooltip target="#product2" position="right" visible={this.state.withTemplateVisible} closeOnOutsideClick={false} > <img width="150" src="../../../../images/products/3.png" /><br /> <b>SuperPlasma 50</b><br /> 2400$ </Tooltip> </div> <div className="label">With animation</div> <div> <img id="product3" src="../../../../images/products/15.png" onMouseEnter={this.toggleWithAnimation} onMouseLeave={this.toggleWithAnimation} /> <Tooltip target="#product3" position="top" animation={animationConfig} visible={this.state.withAnimationVisible} closeOnOutsideClick={false} > <div>Projector PlusHD</div> </Tooltip> </div> </div> ); } toggleDefault() { this.setState({ defaultVisible: !this.state.defaultVisible, }); } toggleWithTemplate() { this.setState({ withTemplateVisible: !this.state.withTemplateVisible, }); } toggleWithAnimation() { this.setState({ withAnimationVisible: !this.state.withAnimationVisible, }); } } export default App;
import React from 'react'; import ReactDOM from 'react-dom'; import App from './App.js'; ReactDOM.render( <App />, document.getElementById('app'), );
<!DOCTYPE html> <html> <head> <title>DevExtreme Demo</title> <meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0" /> <link rel="stylesheet" type="text/css" href="https://cdn3.devexpress.com/jslib/21.2.3/css/dx.common.css" /> <link rel="stylesheet" type="text/css" href="https://cdn3.devexpress.com/jslib/21.2.3/css/dx.light.css" /> <link rel="stylesheet" type="text/css" href="styles.css" /> <script src="https://unpkg.com/core-js@2.4.1/client/shim.min.js"></script> <script src="https://unpkg.com/systemjs@0.21.3/dist/system.js"></script> <script type="text/javascript" src="config.js"></script> <script type="text/javascript"> System.import("./index.js"); </script> </head> <body class="dx-viewport"> <div class="demo-container"> <div id="app"></div> </div> </body> </html>
.form { padding: 20px; } .form img { width: 100px; margin: 10px 0 30px; } .label { font-size: 16px; }
window.config = { transpiler: 'plugin-babel', meta: { 'devextreme/localization.js': { 'esModule': true, }, }, paths: { 'npm:': 'https://unpkg.com/', }, defaultExtension: 'js', map: { 'react': 'npm:react@17.0.2/umd/react.development.js', 'react-dom': 'npm:react-dom@17.0.2/umd/react-dom.development.js', 'prop-types': 'npm:prop-types@15.7.2/prop-types.js', 'rrule': 'npm:rrule@2.6.6/dist/es5/rrule.js', 'luxon': 'npm:luxon@1.28.0/build/global/luxon.min.js', 'es6-object-assign': 'npm:es6-object-assign@1.1.0', 'devextreme': 'npm:devextreme@21.2.3/cjs', 'devextreme-react': 'npm:devextreme-react@21.2.3', 'jszip': 'npm:jszip@3.7.1/dist/jszip.min.js', 'devextreme-quill': 'npm:devextreme-quill@1.5.5/dist/dx-quill.min.js', 'devexpress-diagram': 'npm:devexpress-diagram@2.1.37/dist/dx-diagram.js', 'devexpress-gantt': 'npm:devexpress-gantt@3.1.24/dist/dx-gantt.js', '@devextreme/vdom': 'npm:@devextreme/vdom@2.2.3', '@devextreme/runtime': 'npm:@devextreme/runtime@2.3.8', 'inferno': 'npm:inferno@7.4.10/dist/inferno.min.js', 'inferno-compat': 'npm:inferno-compat@7.4.10/dist/inferno-compat.min.js', 'inferno-create-element': 'npm:inferno-create-element@7.4.10/dist/inferno-create-element.min.js', 'inferno-dom': 'npm:inferno-dom@1.0.7/dist/inferno-dom.min.js', 'inferno-hydrate': 'npm:inferno-hydrate@7.4.10/dist/inferno-hydrate.min.js', 'inferno-clone-vnode': 'npm:inferno-clone-vnode@7.4.10/dist/inferno-clone-vnode.min.js', 'inferno-create-class': 'npm:inferno-create-class@7.4.10/dist/inferno-create-class.min.js', 'inferno-extras': 'npm:inferno-extras@7.4.10/dist/inferno-extras.min.js', // SystemJS plugins 'plugin-babel': 'npm:systemjs-plugin-babel@0.0.25/plugin-babel.js', 'systemjs-babel-build': 'npm:systemjs-plugin-babel@0.0.25/systemjs-babel-browser.js', }, packages: { 'devextreme': { defaultExtension: 'js', }, '@devextreme/vdom': { defaultExtension: 'js', }, 'devextreme-react': { main: 'index.js', }, 'devextreme/events/utils': { main: 'index', }, 'devextreme/events': { main: 'index', }, 'es6-object-assign': { main: './index.js', defaultExtension: 'js', }, }, packageConfigPaths: [ 'npm:@devextreme/*/package.json', 'npm:@devextreme/runtime@2.3.8/inferno/package.json', ], babelOptions: { sourceMaps: false, stage0: true, react: true, }, }; System.config(window.config);