or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

Files

docs

effects.mdindex.mdinteractions.mdutilities.mdwidgets.md
tile.json

effects.mddocs/

0

# Effects

1

2

jQuery UI effects provide enhanced animation capabilities beyond standard jQuery animations. The effects system includes 15+ built-in effects and enhanced versions of jQuery's core animation methods.

3

4

## Capabilities

5

6

### Enhanced Animation Methods

7

8

jQuery UI extends jQuery's core animation methods to accept effect names and options:

9

10

```javascript { .api }

11

/**

12

* Hides element with specified effect

13

* @param {string} effect - Effect name (e.g., 'blind', 'slide', 'fade')

14

* @param {object|number} options - Effect options or duration

15

* @param {number} duration - Duration in milliseconds

16

* @param {Function} callback - Completion callback

17

*/

18

$(element).hide(effect, options, duration, callback);

19

20

/**

21

* Shows element with specified effect

22

* @param {string} effect - Effect name

23

* @param {object|number} options - Effect options or duration

24

* @param {number} duration - Duration in milliseconds

25

* @param {Function} callback - Completion callback

26

*/

27

$(element).show(effect, options, duration, callback);

28

29

/**

30

* Toggles element visibility with specified effect

31

* @param {string} effect - Effect name

32

* @param {object|number} options - Effect options or duration

33

* @param {number} duration - Duration in milliseconds

34

* @param {Function} callback - Completion callback

35

*/

36

$(element).toggle(effect, options, duration, callback);

37

```

38

39

### Class Animation Methods

40

41

Animated CSS class manipulation with effects:

42

43

```javascript { .api }

44

/**

45

* Adds CSS class with animation

46

* @param {string} className - Class name to add

47

* @param {number} duration - Animation duration

48

* @param {string} easing - Easing function name

49

* @param {Function} callback - Completion callback

50

*/

51

$(element).addClass(className, duration, easing, callback);

52

53

/**

54

* Removes CSS class with animation

55

* @param {string} className - Class name to remove

56

* @param {number} duration - Animation duration

57

* @param {string} easing - Easing function name

58

* @param {Function} callback - Completion callback

59

*/

60

$(element).removeClass(className, duration, easing, callback);

61

62

/**

63

* Toggles CSS class with animation

64

* @param {string} className - Class name to toggle

65

* @param {number} duration - Animation duration

66

* @param {string} easing - Easing function name

67

* @param {Function} callback - Completion callback

68

*/

69

$(element).toggleClass(className, duration, easing, callback);

70

71

/**

72

* Switches from one class to another with animation

73

* @param {string} removeClassName - Class to remove

74

* @param {string} addClassName - Class to add

75

* @param {number} duration - Animation duration

76

* @param {string} easing - Easing function name

77

* @param {Function} callback - Completion callback

78

*/

79

$(element).switchClass(removeClassName, addClassName, duration, easing, callback);

80

```

81

82

## Individual Effects

83

84

### Blind

85

86

Blinds element up/down or left/right like a window blind:

87

88

```javascript { .api }

89

$(element).hide('blind', { direction: 'vertical' }, 1000);

90

$(element).show('blind', { direction: 'horizontal' }, 1000);

91

```

92

93

**Options:**

94

- `direction`: `'up'` | `'vertical'` | `'down'` | `'left'` | `'horizontal'` | `'right'` (default: `'up'`)

95

96

### Bounce

97

98

Bounces element multiple times with decreasing intensity:

99

100

```javascript { .api }

101

$(element).hide('bounce', { times: 5, distance: 200 }, 1000);

102

$(element).show('bounce', { times: 3 }, 1000);

103

```

104

105

**Options:**

106

- `distance`: Distance in pixels for bounce (default: 20)

107

- `times`: Number of bounces (default: 5)

108

109

### Clip

110

111

Clips element from specified edges inward:

112

113

```javascript { .api }

114

$(element).hide('clip', { direction: 'vertical' }, 1000);

115

$(element).show('clip', { direction: 'horizontal' }, 1000);

116

```

117

118

**Options:**

119

- `direction`: `'vertical'` | `'horizontal'` (default: `'vertical'`)

120

121

### Drop

122

123

Drops element in/out from specified direction:

124

125

```javascript { .api }

126

$(element).hide('drop', { direction: 'left' }, 1000);

127

$(element).show('drop', { direction: 'up' }, 1000);

128

```

129

130

**Options:**

131

- `direction`: `'up'` | `'down'` | `'left'` | `'right'` (default: `'left'`)

132

133

### Explode

134

135

Explodes element into configurable number of pieces:

136

137

```javascript { .api }

138

$(element).hide('explode', { pieces: 16 }, 1000);

139

$(element).show('explode', { pieces: 9 }, 1000);

140

```

141

142

**Options:**

143

- `pieces`: Number of pieces (default: 9)

144

145

### Fade

146

147

Fades element opacity to specified level:

148

149

```javascript { .api }

150

$(element).hide('fade', 1000);

151

$(element).show('fade', 1000);

152

$(element).toggle('fade', { to: 0.5 }, 1000);

153

```

154

155

**Options:**

156

- `to`: Target opacity (default: 0 for hide, 1 for show)

157

158

### Fold

159

160

Folds element by shrinking opposite borders:

161

162

```javascript { .api }

163

$(element).hide('fold', { size: 50, horizFirst: true }, 1000);

164

$(element).show('fold', { size: 20 }, 1000);

165

```

166

167

**Options:**

168

- `size`: Size in pixels or percentage (default: 15)

169

- `horizFirst`: Fold horizontal first (default: false)

170

171

### Highlight

172

173

Highlights element with background color change:

174

175

```javascript { .api }

176

$(element).show('highlight', { color: '#ffff99' }, 1000);

177

$(element).effect('highlight', { color: 'red' }, 1000);

178

```

179

180

**Options:**

181

- `color`: Highlight color (default: '#ffff99')

182

183

### Puff

184

185

Element grows while fading out (like smoke puff):

186

187

```javascript { .api }

188

$(element).hide('puff', { percent: 150 }, 1000);

189

$(element).show('puff', { percent: 120 }, 1000);

190

```

191

192

**Options:**

193

- `percent`: Scale percentage (default: 150)

194

195

### Pulsate

196

197

Pulsates element opacity in configurable intervals:

198

199

```javascript { .api }

200

$(element).show('pulsate', { times: 3 }, 1000);

201

$(element).effect('pulsate', { times: 5 }, 2000);

202

```

203

204

**Options:**

205

- `times`: Number of pulses (default: 5)

206

207

### Scale

208

209

Scales element to specified percentage:

210

211

```javascript { .api }

212

$(element).hide('scale', { percent: 0, origin: ['middle', 'center'] }, 1000);

213

$(element).show('scale', { percent: 100, direction: 'both' }, 1000);

214

```

215

216

**Options:**

217

- `percent`: Target scale percentage (default: 0 for hide, 100 for show)

218

- `direction`: `'both'` | `'vertical'` | `'horizontal'` (default: `'both'`)

219

- `origin`: Origin point for scaling (default: `['middle', 'center']`)

220

221

### Shake

222

223

Shakes element back and forth horizontally or vertically:

224

225

```javascript { .api }

226

$(element).effect('shake', { direction: 'horizontal', times: 3, distance: 20 }, 1000);

227

```

228

229

**Options:**

230

- `direction`: `'horizontal'` | `'vertical'` (default: `'horizontal'`)

231

- `times`: Number of shakes (default: 3)

232

- `distance`: Shake distance in pixels (default: 20)

233

234

### Size

235

236

Animates element to specified width/height dimensions:

237

238

```javascript { .api }

239

$(element).effect('size', {

240

to: { width: 200, height: 60 },

241

origin: ['top', 'left']

242

}, 1000);

243

```

244

245

**Options:**

246

- `to`: Target dimensions `{ width: number, height: number }`

247

- `origin`: Origin point for resizing (default: `['top', 'left']`)

248

249

### Slide

250

251

Slides element in/out from specified direction:

252

253

```javascript { .api }

254

$(element).hide('slide', { direction: 'left' }, 1000);

255

$(element).show('slide', { direction: 'up' }, 1000);

256

```

257

258

**Options:**

259

- `direction`: `'up'` | `'down'` | `'left'` | `'right'` (default: `'left'`)

260

261

### Transfer

262

263

Transfers element outline to another element:

264

265

```javascript { .api }

266

$(element).effect('transfer', {

267

to: '#target-element',

268

className: 'ui-effects-transfer'

269

}, 1000);

270

```

271

272

**Options:**

273

- `to`: Target element selector or jQuery object

274

- `className`: CSS class for transfer outline (default: `'ui-effects-transfer'`)

275

276

## Effect Utilities

277

278

### Direct Effect Method

279

280

Apply effects without show/hide state changes:

281

282

```javascript { .api }

283

/**

284

* Applies effect without changing element visibility

285

* @param {string} effect - Effect name

286

* @param {object} options - Effect options

287

* @param {number} duration - Duration in milliseconds

288

* @param {Function} callback - Completion callback

289

*/

290

$(element).effect(effect, options, duration, callback);

291

```

292

293

### Effects Core API

294

295

Access to the effects system internals:

296

297

```javascript { .api }

298

/**

299

* Global effects namespace

300

*/

301

$.effects;

302

303

/**

304

* Effects version

305

*/

306

$.effects.version; // "1.13.3"

307

308

/**

309

* Registry of all available effects

310

*/

311

$.effects.effect; // Object containing all effect definitions

312

313

/**

314

* Define a new custom effect

315

* @param {string} name - Effect name

316

* @param {string} mode - Effect mode ('show', 'hide', 'toggle', 'effect')

317

* @param {Function} effect - Effect implementation function

318

*/

319

$.effects.define(name, mode, effect);

320

```

321

322

### Effect Helpers

323

324

Utility functions for effect development:

325

326

```javascript { .api }

327

/**

328

* Creates placeholder element for effects

329

* @param {jQuery} element - Element to create placeholder for

330

* @returns {jQuery} Placeholder element

331

*/

332

$.effects.createPlaceholder(element);

333

334

/**

335

* Removes effect wrapper elements

336

* @param {jQuery} element - Element to unwrap

337

* @returns {jQuery} Unwrapped element

338

*/

339

$.effects.removeWrapper(element);

340

341

/**

342

* Creates wrapper elements for effects

343

* @param {jQuery} element - Element to wrap

344

* @returns {jQuery} Wrapper element

345

*/

346

$.effects.createWrapper(element);

347

348

/**

349

* Gets scaled dimensions for percentage-based effects

350

* @param {jQuery} element - Element to measure

351

* @param {number} percent - Scale percentage

352

* @param {string} direction - Scale direction

353

* @returns {object} Scaled dimensions

354

*/

355

$.effects.scaledDimensions(element, percent, direction);

356

357

/**

358

* Gets baseline coordinates for scaling effects

359

* @param {Array} origin - Origin point array

360

* @param {object} original - Original element dimensions

361

* @returns {object} Baseline coordinates

362

*/

363

$.effects.getBaseline(origin, original);

364

```

365

366

## Types

367

368

```javascript { .api }

369

// Common effect options interface

370

interface EffectOptions {

371

direction?: 'up' | 'down' | 'left' | 'right' | 'horizontal' | 'vertical' | 'both';

372

duration?: number | string;

373

easing?: string;

374

complete?: () => void;

375

}

376

377

// Effect-specific option extensions

378

interface BlindOptions extends EffectOptions {

379

direction?: 'vertical' | 'horizontal';

380

}

381

382

interface BounceOptions extends EffectOptions {

383

distance?: number;

384

times?: number;

385

}

386

387

interface ClipOptions extends EffectOptions {

388

direction?: 'vertical' | 'horizontal';

389

}

390

391

interface DropOptions extends EffectOptions {

392

direction?: 'up' | 'down' | 'left' | 'right';

393

}

394

395

interface ExplodeOptions extends EffectOptions {

396

pieces?: number;

397

}

398

399

interface FadeOptions extends EffectOptions {

400

to?: number;

401

}

402

403

interface FoldOptions extends EffectOptions {

404

size?: number | string;

405

horizFirst?: boolean;

406

}

407

408

interface HighlightOptions extends EffectOptions {

409

color?: string;

410

}

411

412

interface PuffOptions extends EffectOptions {

413

percent?: number;

414

}

415

416

interface PulsateOptions extends EffectOptions {

417

times?: number;

418

}

419

420

interface ScaleOptions extends EffectOptions {

421

percent?: number;

422

direction?: 'both' | 'vertical' | 'horizontal';

423

origin?: [string, string];

424

}

425

426

interface ShakeOptions extends EffectOptions {

427

direction?: 'horizontal' | 'vertical';

428

times?: number;

429

distance?: number;

430

}

431

432

interface SizeOptions extends EffectOptions {

433

to?: { width?: number, height?: number };

434

origin?: [string, string];

435

}

436

437

interface SlideOptions extends EffectOptions {

438

direction?: 'up' | 'down' | 'left' | 'right';

439

}

440

441

interface TransferOptions extends EffectOptions {

442

to?: string | jQuery;

443

className?: string;

444

}

445

446

// Effect definition interface for custom effects

447

interface EffectDefinition {

448

(options: EffectOptions, done: () => void): void;

449

}

450

```

451

452

## Usage Examples

453

454

**Basic effect usage:**

455

```javascript

456

// Simple fade effect

457

$('#element').hide('fade', 1000);

458

459

// Effect with options

460

$('#element').show('slide', { direction: 'up' }, 500);

461

462

// Multiple effects in sequence

463

$('#element')

464

.hide('slide', { direction: 'left' }, 500)

465

.delay(1000)

466

.show('bounce', { times: 3 }, 800);

467

```

468

469

**Class animations:**

470

```javascript

471

// Animate class changes

472

$('#element').addClass('highlighted', 1000);

473

$('#element').removeClass('highlighted', 500);

474

475

// Switch classes smoothly

476

$('#element').switchClass('old-style', 'new-style', 1000);

477

```

478

479

**Effect without state change:**

480

```javascript

481

// Shake element without hiding/showing

482

$('#element').effect('shake', { times: 2 }, 400);

483

484

// Highlight element temporarily

485

$('#element').effect('highlight', { color: 'yellow' }, 1500);

486

```