Skip to content

Instantly share code, notes, and snippets.

@sudodoki
Forked from dmfilipenko/gist:7569387
Last active December 29, 2015 15:19
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save sudodoki/7689386 to your computer and use it in GitHub Desktop.
Save sudodoki/7689386 to your computer and use it in GitHub Desktop.
Напишите конструктор my$, который принимает аргументом DOM селектор.
Реализуйте методы width, height которые соответсвенно изменяют ширишу и высоту всех селекторов,
которые мы определили ранее.
Пример:
var $div = my$('div')
console.log( $div ) //показать все div на странице.
var $red = my$('.red')
console.log( $red ) //показать все DOM элементы с классом .red, которые присутсвуют на странице
$red.width('100') //изменяет текущую высоту до 100px всех DOM элементов с классом .red
Написать реализацию CSS геттеро-сеттера в jQuery которая может принимать на вход ключ значение или объект
со значениями. Для стилизации текущего селектора: цвет, dimensions и других параметров( стоит
огранничиться 5 параметрами, так как их слишком много ). Сделать возможным, чтобы эти методы были
chainable. Добавить возможность, передавать второй /третий аргумент как время, чтобы стили
применились через какое-то время.
Пример:
my$('span').css('color', '#000').css({'font-size':'10px','height': '20px'})
Добавить delegate метод к вашему wrapped set'у из задания https://gist.github.com/dmitryt/7590375
Бонусные очки: добавить возможность, передавать второй /третий аргумент как время, чтобы стили применились через какое-то время
@sejoker
Copy link

sejoker commented Dec 7, 2013

не нашел как запушить дополнительные тесты в Plunker, поэтому добавляю здесь для 2й задачи:

describe('Task#2 - my_$css', function() {
beforeEach(function() {
my_$('#my-id').width('0px');
})

it('should be defined', function() {
expect(my_$).toBeDefined();
})

describe('my_$#css', function() {
it('should set width value if called using css single setter', function() {
expect(my_$('#my-id').css('width', '20px').width()).toEqual(['20px'])
expect(my_$('#my-id').css({
'width': '30px',
'height': '100px'
}).width()).toEqual(['30px'])
})

it('should set width value if called using css multiple setter', function() {
  expect(my_$('#my-id').css('width', '20px').css('width', '10px').width()).toEqual(['10px'])
  expect(my_$('#my-id').css('width', '10px').css({
    'width': '20px',
    'height': '10px'
  }).width()).toEqual(['20px'])
})

it('should set width value with 1 sec timeout using css single setter', function() {
  jasmine.Clock.useMock();
  expect(my_$('#my-id').css('width', '500px', 1000).width()).toEqual(['0px'])
  jasmine.Clock.tick(1000);
  expect(my_$('#my-id').width()).toEqual(['500px'])
})

it('should set width value with 1 sec timeout using css multiple setter', function() {
  jasmine.Clock.useMock();
  expect(my_$('#my-id').css({
    'width': '200px'
  }, 1000).width()).toEqual(['0px'])
  jasmine.Clock.tick(1000);
  expect(my_$('#my-id').width()).toEqual(['200px'])
})

})
})

@sudodoki
Copy link
Author

не нашел как запушить дополнительные тесты в Plunker,

Fork - Edit - Save - Update link in sheet.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment