| Сообщение от devote   | 
	| долбаные префиксы, куча раз из-за них редактировать приходиться. | 
	
Пользуйся 
zen-coding'ом он же по другому называется emmit. Достаточно писать основное свойство, а все с префиксами создаются автоматически.
	
	| Цитата: | 
	| Ну при нажатии на "смайлик" он меняется на "крестик", а сверху выпадает меню со смайлами. При повторном нажатии на "крестик" или в другом месте страницы (кроме текстового поля) Панель закрывается, а "крестик" снова сменяется "смайликом" | 
	
Чтобы менялась сама картинка кнопки при клике - вы все правильно сделали ролловером, меняете position background'a. 
А вот чтобы выпадало меню со смайликами - способ реализации зависит от контекста. Простейший способ - два блока одинаковой высоты с position:relative; один в другом. Изначально у внутреннего top:-(высота блока); Он выдвигается, скажем по 20px через setInterval в 500 милисекунд, также задвигается. Смещение регулируется прибавлением, вычитанием к текущему значению top. Внешний блок должен быть с overflow:hidden; чтобы спрятанная(задвинутая) часть внутреннего блока не была видна.
Позиционирования, в том числе relativ'ное. 
Или метод animate в библиотеке jquery. Также в этой библиотеке есть готовые плагины выдвижных блоков и прочее - если сами делать не хотите.